码迷,mamicode.com
首页 > 其他好文 > 详细

react todoList小demo

时间:2019-12-07 17:47:45      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:mic   name   img   handler   实时   nts   hand   http   delete   

基于create-react-app做的小demo

比较简单直接上代码

效果图

技术图片

 

 

 

import React from ‘react‘

import Input from ‘../../components/Input/index‘
import List from ‘../../components/List/index‘

class Todo extends React.Component{
    constructor(props){
        super(props)
        this.state={
            todos:[]
        };
        this.submitFn=this.submitFn.bind(this);//注意看介绍了两种事件绑定
    }
    submitFn(value){
        console.log(value)
        const id=this.state.todos.length;
        this.setState({
            todos:this.state.todos.concat({
                id:id,
                text:value
            })
        })
    }
    deleteFn(id){
        console.log(id)
        let data=this.state.todos;
        this.setState({
            todos:data.filter(item=>{
                if(item.id!==id){
                    return item
                }
            })
        })
    }
    render(){
        return(
            <div style={{padding:‘20px‘}}>
                <Input submitFn={this.submitFn}/>
                <List todos={this.state.todos} deleteFn={this.deleteFn.bind(this)}/>
            </div>
        )

    }
}

export default Todo;
import React from ‘react‘
import "./input.css"  //可以自定义外联样式
class Input extends React.Component{
    constructor(props,context){
        super(props,context);
        this.state={
            value:‘‘
        };
        this.changeHandler=this.changeHandler.bind(this);
        this.keyUpHandler=this.keyUpHandler.bind(this);
    }
    changeHandler(e){
        // 实时同步数据
        this.setState({value: e.target.value})
    }
    keyUpHandler(e){
        const value=this.state.value;
        console.log(e);
        if(e.keyCode===13&&value.trim()){
            //提交并清空数据
            this.props.submitFn(value);
            this.setState({
                value:‘‘
            })
        }
    }
    render(){
        return(
            <div>
                <input type="text" className="inputStype" value={this.state.value}
                  onChange={this.changeHandler}
                  onKeyUp={this.keyUpHandler}
                />
            </div>
        )
    }
}

export default Input

 

import React from ‘react‘


class List extends React.Component{
    constructor(props){
        super(props);
        this.state={

        }
    }
    clickHandler(id){
        this.props.deleteFn(id)
    }
    render(){
        const data=this.props.todos;
        return(
            <ul style={{marginTop: ‘10px‘, fontSize: ‘20px‘, lineHeight: ‘30px‘}}>
                {data.map((item,index)=>{
                   return <li key={index} onClick={this.clickHandler.bind(this,item.id)}>
                        {item.text}
                    </li>
                })}
            </ul>
        )
    }
}

export default List

  

 

react todoList小demo

标签:mic   name   img   handler   实时   nts   hand   http   delete   

原文地址:https://www.cnblogs.com/zhihou/p/12002652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!