import React,{Component} from 'react';
class TodosList extends Component{
constructor(){
super();
this.repaint = this.repaint.bind(this);
this.state = {
todos:[]
}
}
repaint(row){
this.setState({
todos:row
});
}
render(){
return (
<div className="todo-content">
<h1>TodoList</h1>
<AddNew todos = {this.state.todos} onAdd={this.repaint}/>
<ListTodo todos = {this.state.todos} onDelete={this.repaint}/>
</div>
);
}
}
class AddNew extends Component{
constructor(props){
super(props);
this.addTodo = this.addTodo.bind(this);
this.handleChange = this.handleChange.bind(this);
this.enter = this.enter.bind(this);
this.state = {
value:''
}
}
addTodo(){
if(this.state.value == ''){
alert('输入不能为空');
}else{
var row = this.props.todos;
row.push(this.state.value);
this.props.onAdd(row);
}
}
handleChange(e){
this.setState({
value:e.target.value
});
}
enter(e){
if(e.keyCode == 13){
this.addTodo(e);
e.target.value = '';
}
}
render(){
return (
<div>
<input type="text" onChange={this.handleChange} onKeyDown={this.enter}/>
<button id = 'find' onClick = {this.addTodo}>Add a task</button>
</div>
);
}
}
class ListTodo extends Component{
constructor(props){
super(props);
this.deleteTodo = this.deleteTodo.bind(this);
}
deleteTodo(e){
var index = e.target.getAttribute('data-key');
var row = this.props.todos;
row.splice(index,1);
this.props.onDelete(row);
}
render(){
return (
<ol>
{
this.props.todos.map(function(item,i){
return (
<li>
<span>{item}</span>
<button className="delete" onClick = {this.deleteTodo} data-key = {i}>×</button>
</li>
)
}.bind(this))
}
</ol>
);
}
}
export default TodosList;
TodoList
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Ionic是一个基于Angular2的开发手机web app的框架,它包含了一整套手机端的样式组件,和一系列的功能...
- vue-todolist Hello ,在上次的博客(“前端程序员的一些有学习借鉴作用的网站”)中提到会po出自己...
- 重新分配任务 周一晚上总理给我们重新分配了 Todolist 任务,对于这次 Todolist 的任务重新分配进行...