• React学习 之 阶段性小作品(待办事项_已完成事项 CRUD)


    (一)React demo 作品展示

    (二)代码附详细解释

      将此组件在app.js中引用即可,非常方便。

      

    import React,{Component} from 'react';
    
    import '../assets/css/index.css';
    
    class Todo extends Component{
    
        constructor(props){
            super(props);
            this.state = {
                list:[
                    {
                        title:'起床',
                        checked:false
                    },
                    {
                        title:'刷牙',
                        checked:false
                    },
                    {
                        title:'吃早餐',
                        checked:false
                    },
                    {
                        title:'背书包去公司',
                        checked:false
                    },
                    {
                        title:'开始写代码',
                        checked:false
                    }
                ]
            };
        }
    
        checkBoxState=(key)=>{
    
            //alert("111");
            let tempList = this.state.list;
            //该变选中的状态
            tempList[key].checked = !tempList[key].checked;
    
            this.setState({
                list:tempList
            })
    
        }
    
        removeDate=(key)=>{
    
            let tempList = this.state.list;
            //splice(key,1) 从key 开始 删除一个数据
            tempList.splice(key,1)
    
            this.setState({
                list:tempList
            })
        }
    
        addData= (e) =>{
            //Enter的 keyCode为13  这是键盘事件
            if(e.keyCode == 13){
                //获取输入框中的值
                let title = this.refs.title.value;
                //将数组赋值给一个零时的数组进行操作
                let tempList = this.state.list;
    
                //将输入框里的值放到数组中,默认为待办事件
                tempList.push({
                    title:title,
                    checked:false
                })
    
                //改变后的值赋值给原list
                this.setState({
                    list:tempList
                })
    
                //添加后将输入框中的值清空
                this.refs.title.value = '';
            }
        }
    
        render(){
    
            return(
                <div>
    
                    <header className="title">TodoList:  <input ref="title" onKeyUp={this.addData} /> </header>
    
                    <h2>待办事件</h2>
                    <ul className="db">
                        {
                            this.state.list.map((value,key)=>{
                                if(!value.checked){
                                    return(
                                        <li>
                                            <input type="checkbox" checked={value.checked} onChange={this.checkBoxState.bind(this,key)}></input>
                                           {value.title}
                                           ---- <button onClick={this.removeDate.bind(this,key)}>删除</button>
                                        </li>
                                    )
                                }
                            })
                        }
    
                    </ul>
    
                    <hr/>
                    <h2>已完成事件</h2>
                    <ul className="db2">
                        {
                            this.state.list.map((value,key)=>{
                                if(value.checked){
                                    return(
                                        <li>
                                            <input type="checkbox" checked={value.checked} onChange={this.checkBoxState.bind(this,key)}></input>
                                           {value.title}
                                           ---- <button onClick={this.removeDate.bind(this,key)}>删除</button>
                                        </li>
                                    )
                                }
                            })
                        }
    
                    </ul>
                    <hr/>
    
    
                </div>
            )
        }
    }
    
    export default Todo;

      

        开心就好

  • 相关阅读:
    js 获取两个日期相差的天数--自定义方法
    C# Dictionary类型转json方法之一
    C# Obsolete(已弃用方法属性)
    css 样式计算器
    edge 浏览器自动识别电话号码解问题解决方法
    js 中止程序继续进行(break continue return throw)
    js根据等号(=)前名称获取参数值
    JS 时间格式为/Date(1332919782070)/ 转化为正常的格式
    input 内容发生改变时触发事件
    自我介绍for软件工程课程
  • 原文地址:https://www.cnblogs.com/misscai/p/10399901.html
Copyright © 2020-2023  润新知