React学习7.todoList的实现及数据缓存实现

import React, { Component } from 'react';
import { Checkbox } from 'antd';

class TodoList extends Component {

    constructor(props) {
        super(props);
        this.state = {
            list: [
                
            ]
        };
    }


    addData = () => {
        var tempList = this.state.list;
        tempList.push(
            {
                title: this.refs.title.value,
                checked: false
            }
        );
        // 添加完后回复空
        this.refs.title.value = '';
        this.setState({
            list: tempList
        })

        // 缓存
        localStorage.setItem("todoList", JSON.stringify(tempList));

    }

    removeData = (key) => {

        var tempList = this.state.list;
        tempList.splice(key, 1);
        this.setState({
            list: tempList
        })

        localStorage.setItem("todoList", JSON.stringify(tempList));

    }

    inputChange = (e) => {
        if (e.keyCode == 13) {
            this.addData();
        }
    }

    handleCheck = (key) => {
        var tempList = this.state.list;
        tempList[key].checked = !tempList[key].checked;
        this.setState({
            list: tempList
        })
        localStorage.setItem("todoList", JSON.stringify(tempList));

    }

    //生命周期函数


    componentDidMount() {

        var todoList = JSON.parse(localStorage.getItem("todoList"));
        if (todoList) {
            this.setState({
                list: todoList

            })
        }
    }

    render() {
        return <div>
            <input ref="title" onKeyUp={this.inputChange} /><button onClick={this.addData}>增加+</button>
            <hr />
            <h2>待办事项</h2>

            <ul>
                {
                    this.state.list.map((value, key) => {
                        if (!value.checked) {
                            return (
                                <li key={key}>
                                    <input type="checkbox" checked={value.checked} onClick={this.handleCheck.bind(this, key)} />
                                    {value.title}
                                    <button onClick={this.removeData.bind(this, key)}>删除-</button>
                                </li>)
                        }
                    })
                }
            </ul>
            <hr />
            <h2>已完成事项</h2>
            <ul>
                {
                    this.state.list.map((value, key) => {
                        if (value.checked) {
                            return (
                                <li key={key}>
                                    <input type="checkbox" checked={value.checked} onClick={this.handleCheck.bind(this, key)} />
                                    {value.title} ----
                                    <button onClick={this.removeData.bind(this, key)}>删除-</button>
                                </li>)
                        }
                    })
                }
            </ul>



        </div>
    }
}
export default TodoList;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值