eslint fix
This commit is contained in:
parent
29fdaf1150
commit
e9112e429f
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"parser": "babel-eslint",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 6,
|
||||
"sourceType": "module",
|
||||
|
|
|
@ -1,56 +1,55 @@
|
|||
import { render, WeElement, tag } from "../../src/omi";
|
||||
import "omi-transform";
|
||||
import { render, WeElement, tag } from "../../src/omi"
|
||||
import "omi-transform"
|
||||
|
||||
@tag("my-app")
|
||||
class MyApp extends WeElement {
|
||||
install() {
|
||||
this.data.rotateZ = 30
|
||||
install() {
|
||||
this.data.rotateZ = 30
|
||||
|
||||
this.linkRef = (e) => {
|
||||
this.animDiv = e
|
||||
}
|
||||
}
|
||||
this.linkRef = (e) => {
|
||||
this.animDiv = e
|
||||
}
|
||||
}
|
||||
|
||||
css() {
|
||||
return `
|
||||
css() {
|
||||
return `
|
||||
div{
|
||||
color: red;
|
||||
cursor: pointer;
|
||||
width:150px;
|
||||
height:150px;
|
||||
line-height:150px;
|
||||
text-align: center;
|
||||
border: 1px solid green;
|
||||
color: red;
|
||||
cursor: pointer;
|
||||
width:150px;
|
||||
height:150px;
|
||||
line-height:150px;
|
||||
text-align: center;
|
||||
border: 1px solid green;
|
||||
}`
|
||||
}
|
||||
|
||||
}`;
|
||||
}
|
||||
installed() {
|
||||
setInterval(() => {
|
||||
//slow
|
||||
// this.data.rotateZ += 2
|
||||
// this.update()
|
||||
|
||||
installed() {
|
||||
setInterval(() => {
|
||||
//slow
|
||||
// this.data.rotateZ += 2
|
||||
// this.update()
|
||||
//fast
|
||||
this.animDiv.rotateZ += 2
|
||||
//sync for update call of any scenario
|
||||
this.data.rotateZ = this.animDiv.rotateZ
|
||||
|
||||
//fast
|
||||
this.animDiv.rotateZ += 2
|
||||
//sync for update call of any scenario
|
||||
this.data.rotateZ = this.animDiv.rotateZ
|
||||
|
||||
}, 16)
|
||||
}, 16)
|
||||
|
||||
|
||||
}
|
||||
render(props, data) {
|
||||
}
|
||||
render(props, data) {
|
||||
|
||||
return (
|
||||
<css3-transform rotateZ={data.rotateZ} translateX={0} perspective={0} >
|
||||
<div ref={this.linkRef}>
|
||||
return (
|
||||
<css3-transform rotateZ={data.rotateZ} translateX={0} perspective={0} >
|
||||
<div ref={this.linkRef}>
|
||||
omi-transform
|
||||
</div>
|
||||
</css3-transform>
|
||||
</div>
|
||||
</css3-transform>
|
||||
|
||||
);
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
render(<my-app />, "body");
|
||||
render(<my-app />, "body")
|
||||
|
|
|
@ -1,61 +1,61 @@
|
|||
import { render, WeElement, tag } from "../../src/omi";
|
||||
import { observe } from "./omi-mobx";
|
||||
import { render, WeElement, tag } from "../../src/omi"
|
||||
import { observe } from "./omi-mobx"
|
||||
|
||||
@tag("todo-list")
|
||||
class TodoList extends WeElement {
|
||||
render(props) {
|
||||
return (
|
||||
<ul>
|
||||
{props.items.map(item => (
|
||||
<li key={item.id}>{item.text}</li>
|
||||
))}
|
||||
</ul>
|
||||
);
|
||||
}
|
||||
render(props) {
|
||||
return (
|
||||
<ul>
|
||||
{props.items.map(item => (
|
||||
<li key={item.id}>{item.text}</li>
|
||||
))}
|
||||
</ul>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@observe
|
||||
@tag("todo-app")
|
||||
class TodoApp extends WeElement {
|
||||
static get data() {
|
||||
return { items: [], text: "" };
|
||||
}
|
||||
static get data() {
|
||||
return { items: [], text: "" }
|
||||
}
|
||||
|
||||
render() {
|
||||
console.log('render')
|
||||
return (
|
||||
<div>
|
||||
<h3>TODO</h3>
|
||||
<todo-list items={this.data.items} />
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
<input
|
||||
id="new-todo"
|
||||
onChange={this.handleChange}
|
||||
value={this.data.text}
|
||||
/>
|
||||
<button>
|
||||
render() {
|
||||
console.log('render')
|
||||
return (
|
||||
<div>
|
||||
<h3>TODO</h3>
|
||||
<todo-list items={this.data.items} />
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
<input
|
||||
id="new-todo"
|
||||
onChange={this.handleChange}
|
||||
value={this.data.text}
|
||||
/>
|
||||
<button>
|
||||
Add #{this.data.items.length + 1}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
handleChange = e => {
|
||||
this.data.text = e.target.value;
|
||||
this.data.text = e.target.value
|
||||
};
|
||||
|
||||
handleSubmit = e => {
|
||||
e.preventDefault();
|
||||
if (!this.data.text.trim().length) {
|
||||
return;
|
||||
}
|
||||
this.data.items.push({
|
||||
text: this.data.text,
|
||||
id: Date.now()
|
||||
});
|
||||
this.data.text = "";
|
||||
e.preventDefault()
|
||||
if (!this.data.text.trim().length) {
|
||||
return
|
||||
}
|
||||
this.data.items.push({
|
||||
text: this.data.text,
|
||||
id: Date.now()
|
||||
})
|
||||
this.data.text = ""
|
||||
};
|
||||
}
|
||||
|
||||
render(<todo-app />, "body");
|
||||
render(<todo-app />, "body")
|
||||
|
|
|
@ -23,63 +23,63 @@ import { options } from "../../src/omi"
|
|||
window.requestIdleCallback =
|
||||
window.requestIdleCallback ||
|
||||
function(cb) {
|
||||
return setTimeout(() => {
|
||||
let start = Date.now()
|
||||
cb({
|
||||
didTimeout: false,
|
||||
timeRemaining() {
|
||||
return Math.max(0, 50 - (Date.now() - start))
|
||||
}
|
||||
})
|
||||
}, 1)
|
||||
return setTimeout(() => {
|
||||
let start = Date.now()
|
||||
cb({
|
||||
didTimeout: false,
|
||||
timeRemaining() {
|
||||
return Math.max(0, 50 - (Date.now() - start))
|
||||
}
|
||||
})
|
||||
}, 1)
|
||||
}
|
||||
|
||||
window.cancelIdleCallback =
|
||||
window.cancelIdleCallback ||
|
||||
function(id) {
|
||||
clearTimeout(id)
|
||||
clearTimeout(id)
|
||||
}
|
||||
|
||||
options.afterInstall = function(ele) {
|
||||
if (ele.constructor.observe) {
|
||||
oba(ele.data, ele)
|
||||
}
|
||||
if (ele.constructor.observe) {
|
||||
oba(ele.data, ele)
|
||||
}
|
||||
}
|
||||
|
||||
let idleId = null
|
||||
const updateList = []
|
||||
|
||||
function oba(data, ele) {
|
||||
const o = observable(data)
|
||||
const o = observable(data)
|
||||
|
||||
autorun(() => {
|
||||
JSON.stringify(o)
|
||||
if (ele._isInstalled) {
|
||||
updateList.push(ele)
|
||||
cancelIdleCallback(idleId)
|
||||
idleId = requestIdleCallback(backgroundTask)
|
||||
}
|
||||
})
|
||||
autorun(() => {
|
||||
JSON.stringify(o)
|
||||
if (ele._isInstalled) {
|
||||
updateList.push(ele)
|
||||
cancelIdleCallback(idleId)
|
||||
idleId = requestIdleCallback(backgroundTask)
|
||||
}
|
||||
})
|
||||
|
||||
ele.data = o
|
||||
ele.data = o
|
||||
}
|
||||
|
||||
function backgroundTask(deadline) {
|
||||
while (deadline.timeRemaining() > 0 && updateList.length > 0) {
|
||||
updateList.shift().update()
|
||||
}
|
||||
while (deadline.timeRemaining() > 0 && updateList.length > 0) {
|
||||
updateList.shift().update()
|
||||
}
|
||||
|
||||
if (updateList.length > 0) {
|
||||
idleId = requestIdleCallback(backgroundTask)
|
||||
}
|
||||
if (updateList.length > 0) {
|
||||
idleId = requestIdleCallback(backgroundTask)
|
||||
}
|
||||
}
|
||||
|
||||
function observe(target) {
|
||||
target.observe = true
|
||||
target.observe = true
|
||||
}
|
||||
|
||||
export { observe }
|
||||
|
||||
export default {
|
||||
observe
|
||||
observe
|
||||
}
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
import { render, tag } from "../../src/omi";
|
||||
import { render, tag } from "../../src/omi"
|
||||
|
||||
//Do not use pure element in browsers that do not support Reflect, such as ie11.
|
||||
tag('my-ele', function (props) {
|
||||
return (
|
||||
<ul>
|
||||
{props.items.map(item => (
|
||||
<li key={item.id}>{item.text}</li>
|
||||
))}
|
||||
</ul>
|
||||
)
|
||||
return (
|
||||
<ul>
|
||||
{props.items.map(item => (
|
||||
<li key={item.id}>{item.text}</li>
|
||||
))}
|
||||
</ul>
|
||||
)
|
||||
})
|
||||
|
||||
render((
|
||||
<my-ele
|
||||
items={[{ text: 'Omi', id: 1 }, { text: "Tencent", id: 2 }]}
|
||||
/>
|
||||
), "body");
|
||||
<my-ele
|
||||
items={[{ text: 'Omi', id: 1 }, { text: "Tencent", id: 2 }]}
|
||||
/>
|
||||
), "body")
|
||||
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
import { tag, render, WeElement } from "../../src/omi";
|
||||
import { tag, render, WeElement } from "../../src/omi"
|
||||
|
||||
@tag("hello-element")
|
||||
class HelloElement extends WeElement {
|
||||
render() {
|
||||
return [
|
||||
<div>Hello</div>,
|
||||
<div>Element</div>
|
||||
]
|
||||
}
|
||||
render() {
|
||||
return [
|
||||
<div>Hello</div>,
|
||||
<div>Element</div>
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@tag("my-app")
|
||||
class MyApp extends WeElement {
|
||||
render() {
|
||||
return [
|
||||
<hello-element></hello-element>,
|
||||
<hello-element></hello-element>,
|
||||
<div>abc</div>
|
||||
]
|
||||
}
|
||||
render() {
|
||||
return [
|
||||
<hello-element></hello-element>,
|
||||
<hello-element></hello-element>,
|
||||
<div>abc</div>
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
render(<my-app />, "body");
|
||||
render(<my-app />, "body")
|
||||
|
|
|
@ -1,62 +1,62 @@
|
|||
import { WeElement, tag } from "../../src/omi";
|
||||
import { WeElement, tag } from "../../src/omi"
|
||||
|
||||
@tag("hello-element")
|
||||
class HelloElement extends WeElement {
|
||||
static get props() {
|
||||
return {
|
||||
propFromParent: {
|
||||
value: "9"
|
||||
},
|
||||
msg: {
|
||||
value: ""
|
||||
},
|
||||
num: {
|
||||
value: 10
|
||||
}
|
||||
};
|
||||
}
|
||||
static get props() {
|
||||
return {
|
||||
propFromParent: {
|
||||
value: "9"
|
||||
},
|
||||
msg: {
|
||||
value: ""
|
||||
},
|
||||
num: {
|
||||
value: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static get data() {
|
||||
return {
|
||||
a: 1,
|
||||
b: {
|
||||
c: 2
|
||||
}
|
||||
};
|
||||
}
|
||||
static get data() {
|
||||
return {
|
||||
a: 1,
|
||||
b: {
|
||||
c: 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onClick = evt => {
|
||||
//trigger CustomEvent
|
||||
this.fire("abc", { name: "dntzhang", age: 12 });
|
||||
evt.stopPropagation();
|
||||
//trigger CustomEvent
|
||||
this.fire("abc", { name: "dntzhang", age: 12 })
|
||||
evt.stopPropagation()
|
||||
};
|
||||
|
||||
installed() {
|
||||
setTimeout(() => {
|
||||
this.data.a = 2;
|
||||
this.update();
|
||||
}, 1000);
|
||||
setTimeout(() => {
|
||||
this.data.a = 2
|
||||
this.update()
|
||||
}, 1000)
|
||||
}
|
||||
|
||||
css() {
|
||||
return `
|
||||
return `
|
||||
div{
|
||||
color: red;
|
||||
cursor: pointer;
|
||||
}`;
|
||||
}`
|
||||
}
|
||||
|
||||
render(props, data) {
|
||||
return (
|
||||
<div onClick={this.onClick}>
|
||||
return (
|
||||
<div onClick={this.onClick}>
|
||||
Hello {props.msg} {props.propFromParent}
|
||||
<div>
|
||||
<div>
|
||||
Click Me!
|
||||
{props.num}
|
||||
</div>
|
||||
<div>data: {data.a}</div>
|
||||
<div>props {props.num}</div>
|
||||
</div>
|
||||
);
|
||||
{props.num}
|
||||
</div>
|
||||
<div>data: {data.a}</div>
|
||||
<div>props {props.num}</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,39 +1,39 @@
|
|||
import { render, WeElement, tag } from "../../src/omi";
|
||||
import "./hello-element";
|
||||
import { render, WeElement, tag } from "../../src/omi"
|
||||
import "./hello-element"
|
||||
|
||||
@tag("my-app")
|
||||
class MyApp extends WeElement {
|
||||
onClick = evt => {};
|
||||
|
||||
static get data() {
|
||||
return { abc: "abc", passToChild: 123 };
|
||||
return { abc: "abc", passToChild: 123 }
|
||||
}
|
||||
|
||||
onAbc = evt => {
|
||||
this.data.abc = " by " + evt.detail.name;
|
||||
this.data.passToChild = 1234;
|
||||
this.update();
|
||||
this.data.abc = " by " + evt.detail.name
|
||||
this.data.passToChild = 1234
|
||||
this.update()
|
||||
};
|
||||
|
||||
css() {
|
||||
return `
|
||||
return `
|
||||
div{
|
||||
color: green;
|
||||
}`;
|
||||
}`
|
||||
}
|
||||
|
||||
render(props, data) {
|
||||
return (
|
||||
<div onClick={this.onClick}>
|
||||
return (
|
||||
<div onClick={this.onClick}>
|
||||
Hello {props.name} {data.abc}
|
||||
<hello-element
|
||||
onAbc={this.onAbc}
|
||||
prop-from-parent={data.passToChild}
|
||||
msg="WeElement"
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
<hello-element
|
||||
onAbc={this.onAbc}
|
||||
prop-from-parent={data.passToChild}
|
||||
msg="WeElement"
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
render(<my-app name="Omi v4.0" />, "body");
|
||||
render(<my-app name="Omi v4.0" />, "body")
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
import { tag, render, WeElement } from "../../src/omi";
|
||||
import { tag, render, WeElement } from "../../src/omi"
|
||||
|
||||
@tag("hello-element")
|
||||
class HelloElement extends WeElement {
|
||||
render() {
|
||||
return (
|
||||
<div onClick={this.onClick}>
|
||||
<p>
|
||||
<slot name="my-text">My default text</slot>
|
||||
</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
render() {
|
||||
return (
|
||||
<div onClick={this.onClick}>
|
||||
<p>
|
||||
<slot name="my-text">My default text</slot>
|
||||
</p>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@tag("my-app")
|
||||
class MyApp extends WeElement {
|
||||
render() {
|
||||
return (
|
||||
<div>
|
||||
<hello-element>
|
||||
<span slot="my-text">Let's have some different text!</span>
|
||||
</hello-element>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
render() {
|
||||
return (
|
||||
<div>
|
||||
<hello-element>
|
||||
<span slot="my-text">Let's have some different text!</span>
|
||||
</hello-element>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
render(<my-app />, "body");
|
||||
render(<my-app />, "body")
|
||||
|
|
|
@ -1,103 +1,103 @@
|
|||
import { render, WeElement, tag } from "../../src/omi";
|
||||
import { render, WeElement, tag } from "../../src/omi"
|
||||
|
||||
@tag("todo-list", true)
|
||||
class TodoList extends WeElement {
|
||||
render(props) {
|
||||
return (
|
||||
<ul>
|
||||
{props.items.map(item => (
|
||||
<li key={item.id}>{item.text}</li>
|
||||
))}
|
||||
</ul>
|
||||
);
|
||||
}
|
||||
render(props) {
|
||||
return (
|
||||
<ul>
|
||||
{props.items.map(item => (
|
||||
<li key={item.id}>{item.text}</li>
|
||||
))}
|
||||
</ul>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@tag("todo-app")
|
||||
class TodoApp extends WeElement {
|
||||
static get data() {
|
||||
return {
|
||||
showList: null,
|
||||
items: null,
|
||||
text: null,
|
||||
firstName: null,
|
||||
lastName: null
|
||||
};
|
||||
}
|
||||
static get data() {
|
||||
return {
|
||||
showList: null,
|
||||
items: null,
|
||||
text: null,
|
||||
firstName: null,
|
||||
lastName: null
|
||||
}
|
||||
}
|
||||
|
||||
render(props, data) {
|
||||
return (
|
||||
<div>
|
||||
<h3>TODO by {data.fullName()}</h3>
|
||||
{data.showList && <todo-list items={data.items} />}
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
<input id="new-todo" onChange={this.handleChange} value={data.text} />
|
||||
<button>Add #{data.items.length + 1}</button>
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
render(props, data) {
|
||||
return (
|
||||
<div>
|
||||
<h3>TODO by {data.fullName()}</h3>
|
||||
{data.showList && <todo-list items={data.items} />}
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
<input id="new-todo" onChange={this.handleChange} value={data.text} />
|
||||
<button>Add #{data.items.length + 1}</button>
|
||||
</form>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
handleChange = e => {
|
||||
this.store.data.text = e.target.value;
|
||||
this.store.data.text = e.target.value
|
||||
};
|
||||
|
||||
handleSubmit = e => {
|
||||
e.preventDefault();
|
||||
this.store.add();
|
||||
e.preventDefault()
|
||||
this.store.add()
|
||||
};
|
||||
|
||||
installed() {
|
||||
setTimeout(() => {
|
||||
this.store.rename();
|
||||
}, 2000);
|
||||
setTimeout(() => {
|
||||
this.store.rename()
|
||||
}, 2000)
|
||||
|
||||
setTimeout(() => {
|
||||
this.store.data.items.push({ text: "abc" });
|
||||
}, 4000);
|
||||
setTimeout(() => {
|
||||
this.store.data.items.push({ text: "abc" })
|
||||
}, 4000)
|
||||
|
||||
setTimeout(() => {
|
||||
this.store.data.items[2].text = "changed";
|
||||
}, 6000);
|
||||
setTimeout(() => {
|
||||
this.store.data.items[2].text = "changed"
|
||||
}, 6000)
|
||||
|
||||
setTimeout(() => {
|
||||
this.store.data.items.splice(1, 1);
|
||||
}, 8000);
|
||||
setTimeout(() => {
|
||||
this.store.data.items.splice(1, 1)
|
||||
}, 8000)
|
||||
|
||||
setTimeout(() => {
|
||||
this.store.data.showList = false;
|
||||
}, 10000);
|
||||
setTimeout(() => {
|
||||
this.store.data.showList = false
|
||||
}, 10000)
|
||||
|
||||
setTimeout(() => {
|
||||
this.store.data.showList = true;
|
||||
}, 12000);
|
||||
setTimeout(() => {
|
||||
this.store.data.showList = true
|
||||
}, 12000)
|
||||
}
|
||||
}
|
||||
|
||||
const store = {
|
||||
data: {
|
||||
showList: true,
|
||||
items: [{ text: "Omi", id: Date.now() }, { text: "JSX", id: Date.now() }],
|
||||
text: "",
|
||||
firstName: "dnt",
|
||||
lastName: "zhang",
|
||||
fullName: function() {
|
||||
return this.firstName + this.lastName;
|
||||
}
|
||||
},
|
||||
rename: function() {
|
||||
this.data.firstName = "Dnt";
|
||||
},
|
||||
add: function() {
|
||||
if (!this.data.text.trim().length) {
|
||||
return;
|
||||
}
|
||||
this.data.items.push({
|
||||
text: this.data.text,
|
||||
id: Date.now()
|
||||
});
|
||||
this.data.text = "";
|
||||
}
|
||||
};
|
||||
data: {
|
||||
showList: true,
|
||||
items: [{ text: "Omi", id: Date.now() }, { text: "JSX", id: Date.now() }],
|
||||
text: "",
|
||||
firstName: "dnt",
|
||||
lastName: "zhang",
|
||||
fullName: function() {
|
||||
return this.firstName + this.lastName
|
||||
}
|
||||
},
|
||||
rename: function() {
|
||||
this.data.firstName = "Dnt"
|
||||
},
|
||||
add: function() {
|
||||
if (!this.data.text.trim().length) {
|
||||
return
|
||||
}
|
||||
this.data.items.push({
|
||||
text: this.data.text,
|
||||
id: Date.now()
|
||||
})
|
||||
this.data.text = ""
|
||||
}
|
||||
}
|
||||
|
||||
render(<todo-app />, "body", store);
|
||||
render(<todo-app />, "body", store)
|
||||
|
|
|
@ -4,11 +4,11 @@ import "omi-tap"
|
|||
@tag("my-app")
|
||||
class MyApp extends WeElement {
|
||||
onTap = () => {
|
||||
console.log('tap')
|
||||
console.log('tap')
|
||||
}
|
||||
|
||||
css() {
|
||||
return `
|
||||
return `
|
||||
div{
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
|
@ -21,12 +21,12 @@ class MyApp extends WeElement {
|
|||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<omi-tap onTap={this.onTap} >
|
||||
<div>Tap Me!</div>
|
||||
</omi-tap>
|
||||
)
|
||||
return (
|
||||
<omi-tap onTap={this.onTap} >
|
||||
<div>Tap Me!</div>
|
||||
</omi-tap>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
render(<my-app />, "body");
|
||||
render(<my-app />, "body")
|
||||
|
|
|
@ -1,58 +1,57 @@
|
|||
import { render, WeElement, tag } from "../../src/omi";
|
||||
import { render, WeElement, tag } from "../../src/omi"
|
||||
|
||||
@tag("todo-list")
|
||||
class TodoList extends WeElement {
|
||||
render(props) {
|
||||
return (
|
||||
<ul>
|
||||
{props.items.map(item => (
|
||||
<li key={item.id}>{item.text}</li>
|
||||
))}
|
||||
</ul>
|
||||
);
|
||||
}
|
||||
render(props) {
|
||||
return (
|
||||
<ul>
|
||||
{props.items.map(item => (
|
||||
<li key={item.id}>{item.text}</li>
|
||||
))}
|
||||
</ul>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@tag("todo-app")
|
||||
class TodoApp extends WeElement {
|
||||
static get data() {
|
||||
return { items: [], text: "" };
|
||||
}
|
||||
static get data() {
|
||||
return { items: [], text: "" }
|
||||
}
|
||||
|
||||
render() {
|
||||
console.log(111);
|
||||
return (
|
||||
<div>
|
||||
<h3>TODO</h3>
|
||||
<todo-list items={this.data.items} />
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
<input
|
||||
id="new-todo"
|
||||
onChange={this.handleChange}
|
||||
value={this.data.text}
|
||||
/>
|
||||
<button>Add #{this.data.items.length + 1}</button>
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
render() {
|
||||
return (
|
||||
<div>
|
||||
<h3>TODO</h3>
|
||||
<todo-list items={this.data.items} />
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
<input
|
||||
id="new-todo"
|
||||
onChange={this.handleChange}
|
||||
value={this.data.text}
|
||||
/>
|
||||
<button>Add #{this.data.items.length + 1}</button>
|
||||
</form>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
handleChange = e => {
|
||||
this.data.text = e.target.value;
|
||||
this.data.text = e.target.value
|
||||
};
|
||||
|
||||
handleSubmit = e => {
|
||||
e.preventDefault();
|
||||
if (!this.data.text.trim().length) {
|
||||
return;
|
||||
}
|
||||
this.data.items.push({
|
||||
text: this.data.text,
|
||||
id: Date.now()
|
||||
});
|
||||
this.data.text = "";
|
||||
this.update();
|
||||
e.preventDefault()
|
||||
if (!this.data.text.trim().length) {
|
||||
return
|
||||
}
|
||||
this.data.items.push({
|
||||
text: this.data.text,
|
||||
id: Date.now()
|
||||
})
|
||||
this.data.text = ""
|
||||
this.update()
|
||||
};
|
||||
}
|
||||
|
||||
render(<todo-app />, "body");
|
||||
render(<todo-app />, "body")
|
||||
|
|
Loading…
Reference in New Issue