zoukankan      html  css  js  c++  java
  • react todoList小demo

    基于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
    

      

     

  • 相关阅读:
    内存映射
    docstring show under decorator
    eventlet dbpool for postgresql &mysql
    za python
    Install MySQL 5.0 Max on FC3
    vi
    ff chrome tips
    20101004网站部署更新
    sqlalchemy type &elixir type
    20100930网站部署更新日志
  • 原文地址:https://www.cnblogs.com/zhihou/p/12002652.html
Copyright © 2011-2022 走看看