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
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- Ionic是一个基于Angular2的开发手机web app的框架,它包含了一整套手机端的样式组件,和一系列的功能...
- vue-todolist Hello ,在上次的博客(“前端程序员的一些有学习借鉴作用的网站”)中提到会po出自己...
- 重新分配任务 周一晚上总理给我们重新分配了 Todolist 任务,对于这次 Todolist 的任务重新分配进行...