TodoList

作者: Funwt | 来源:发表于2017-11-01 22:14 被阅读11次

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}>&times;</button>
                            </li>

                        )
                    }.bind(this))
                }
            </ol>
        );
    }
}
export default TodosList;

相关文章

网友评论

      本文标题:TodoList

      本文链接:https://www.haomeiwen.com/subject/sednpxtx.html