React训练小demo

掉demo,点击取反重新赋值,
在这里插入图片描述

import React, {Component} from 'react'
import '../Todemo/Tododemo.less'
import Storage from '../../puble/Storage'

class Tododemo extends Component {
    constructor(props) {
        super(props);
        this.state = { 
            msg:'demo案例演示',
            list:[
                {
                    title:'你是狗',
                    checked:true
                },
                {
                    title:'你是猪',
                    checked:true
                },
                {
                    title:'你是猫',
                    checked:false
                },
                {
                    title:'你是驴',
                    checked:true
                },
            ],
         };
    }
    setData=(e)=>{

        if(e.keyCode ===13 && this.refs.input_value.value!==''){
            var temlist = this.state.list;
            var cty = this.refs.input_value.value
            temlist.push({
                title:cty,   // 前面数组里面的值,后面input的value。
                checked:false  // 默认设置false。
            });
            this.refs.input_value.value ='';  // 回车后,输入框为空。
            this.setState({
                list:temlist    //原始的list等于 当前更换新的temlist/list
            })
             //缓存数据,localStorage只能存字符串,需要把对象转化为字符串。
            // localStorage.setItem('list',JSON.stringify(temlist))//设置存储数据
              Storage.set('list',temlist);  // 封装localStorage

         }else{
            console.log('不能为空')
        }
    }
    Deleted =(key)=>{
        // alert(key)
        var temlist = this.state.list;
        temlist.splice(key,1)
        // 删除完重新赋值
        this.setState({
            list:temlist
        })
        //缓存数据,localStorage只能存字符串,需要把对象转化为字符串。
        //localStorage.setItem('list',JSON.stringify(temlist))//设置存储数据
          Storage.set('list',temlist); // 封装localStorage
    }
    inputchecked =(key)=>{
        var hobby = this.state.list;
        hobby[key].checked =!hobby[key].checked; // 点击checked取反。
        // 重新赋值。
        this.setState({
            hobby:hobby
          })
           //缓存数据,localStorage只能存字符串,需要把对象转化为字符串。
           //localStorage.setItem('list',JSON.stringify(hobby)) //设置存储数据
           Storage.set('list',hobby); // 封装localStorage
    }
    //生命周期,页面加载就会触发、
    componentDidMount(){
        //var todolist = JSON.parse(localStorage.getItem('list'));//获取存储数据
        var todolist = Storage.get('list'); // 封装localStorage
        if(todolist){
            this.setState({
                list:todolist
            })
        } 
    }

    render() {
        return (
            <div className='tododemo'>
                 <h2>{this.state.msg}</h2>
                 <div className='structure'>
                    <input ref='input_value' type="text" className='input_style'  onKeyUp={this.setData} /> 
                 </div>
                 <hr/>
                 <h4>进行中</h4>
                 <div className='create_medium'>
                   {/* {
                         this.state.list.map((item,key)=>{
                             return(
                                <p key={key}>{item} ------- <button onClick={this.Deleted.bind(this,key)}>删除</button></p>
                             )
                         })
                    } */}

                    {
                        this.state.list.map((item,key)=>{
                            if(!item.checked){
                                return(
                                    <p key={key}>
                                        <input type="checkbox" checked={item.checked} onChange={this.inputchecked.bind(this,key)} />
                                        {item.title} -------
                                        <button onClick={this.Deleted.bind(this,key)}>删除</button>
                                    </p> 
                                )
                            }
                           
                        })
                    }
                 </div>
                 <hr/>
                 <h4>已完成</h4>
                 <div className='completed'>
                    
                    {
                        this.state.list.map((item,key)=>{
                            if(item.checked){
                                return(
                                    <p key={key}>
                                    <input type="checkbox" checked={item.checked} onChange={this.inputchecked.bind(this,key)} />
                                    {item.title} -------
                                    <button onClick={this.Deleted.bind(this,key)}>删除</button>
                                </p>  
                                )
                            }
                            
                        })
                    }
                 </div>
            </div>
        );
    }
}

export default Tododemo;

封装localStorage 模块化

var Storage={
    set(key,vaule){
        localStorage.setItem(key,JSON.stringify(vaule));
    },
    get(key){
       return JSON.parse(localStorage.getItem(key)); 
    },
    remove(key){
        localStorage.removeItem(key);
    }
};
export default Storage;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值