博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
09.React的模块化以及封装Storage实现todolist 待办事项 已经完成事项 以及实现数据持久化(下)...
阅读量:6497 次
发布时间:2019-06-24

本文共 6912 字,大约阅读时间需要 23 分钟。

hot3.png

 

一.添加缓存数据

//执行缓存数据localStorage.setItem('todolist',JSON.stringify(tempList));

二.页面加载的时候加载数据

生命周期函数(页面加载的时候就会触发)

//生命周期函数  页面加载就会触发    componentDidMount(){        //获取缓存的数据        var todolist=JSON.parse(localStorage.getItem('todolist'));   /*字符串*/        if(todolist){            this.setState({                list:todolist            })        }    }

 

完整代码

import React,{Component} from 'react';import '../assets/css/index.css';class Todolist extends Component {    constructor(props) {        super(props);        this.state = {             list:[                // {                //     title:'录制ionic',                //     checked:true                // },                // {                //     title:'录制nodejs',                //     checked:false                // }                // ,                // {                //     title:'录制egg.js',                //     checked:true                // } ,                // {                //     title:'录制vue',                //     checked:false                // }            ]        };    }       addData=(e)=>{        //按下回车的时候在增加        if(e.keyCode==13){                            // alert(title);            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='';            //执行缓存数据            localStorage.setItem('todolist',JSON.stringify(tempList));        }    }    checkboxChage=(key)=>{        // alert('111');        let tempList=this.state.list;        tempList[key].checked=!tempList[key].checked;        this.setState({            list:tempList        })        //执行缓存数据        localStorage.setItem('todolist',JSON.stringify(tempList));    }    removeData=(key)=>{        let tempList=this.state.list;        tempList.splice(key,1);         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 (            
TodoList:  

待办事项


    { this.state.list.map((value,key)=>{ if(!value.checked){ return (
  • {value.title} --
  • ) } }) }

已完成事项


    { this.state.list.map((value,key)=>{ if(value.checked){ return (
  • {value.title} --
  • ) } }) }
); }}export default Todolist;

 

三.封装Storage

定义自定义模块

var storage={    set(key,value){        localStorage.setItem(key,JSON.stringify(value));    },    get(key){        return JSON.parse(localStorage.getItem(key));    },    remove(key){        localStorage.removeItem(key)    }};export default storage;

页面完整代码

import React,{Component} from 'react';import '../assets/css/index.css';//引入自定义模块import storage from '../model/storage';class Todolist extends Component {    constructor(props) {        super(props);        this.state = {             list:[                         ]        };    }       addData=(e)=>{        //按下回车的时候在增加        if(e.keyCode==13){                            // alert(title);            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='';            //执行缓存数据                       storage.set('todolist',tempList);        }    }    checkboxChage=(key)=>{        // alert('111');        let tempList=this.state.list;        tempList[key].checked=!tempList[key].checked;        this.setState({            list:tempList        })        //执行缓存数据        storage.set('todolist',tempList);    }    removeData=(key)=>{        let tempList=this.state.list;        tempList.splice(key,1);         this.setState({            list:tempList        })        //执行缓存数据        storage.set('todolist',tempList);    }    //生命周期函数  页面加载就会触发    componentDidMount(){        //获取缓存的数据        var todolist=storage.get('todolist');          if(todolist){            this.setState({                list:todolist            })        }    }    render() {        return (            
TodoList:  

待办事项


    { this.state.list.map((value,key)=>{ if(!value.checked){ return (
  • {value.title} --
  • ) } }) }

已完成事项


    { this.state.list.map((value,key)=>{ if(value.checked){ return (
  • {value.title} --
  • ) } }) }
); }}export default Todolist;

 

 

转载于:https://my.oschina.net/glorylion/blog/3000957

你可能感兴趣的文章
解读浮动闭合最佳方案:clearfix
查看>>
Charles使用
查看>>
Python GUI编程(Tkinter) windows界面开发
查看>>
P(Y|X) 和 P(X,Y)
查看>>
dynamic关键字的使用
查看>>
iOS 音乐播放器之锁屏效果+歌词解析
查看>>
【转】Google 的眼光
查看>>
android O 蓝牙设备默认名称更改
查看>>
阳台的青椒苗
查看>>
swapper进程【转】
查看>>
跨链技术与通证经济
查看>>
爬虫学习之-xpath
查看>>
js jQuery 右键菜单 清屏
查看>>
深入理解let和var的区别(暂时性死区)!!!
查看>>
dotConnect for Oracle
查看>>
Eclipse下C/C++开发环境搭建
查看>>
Eclipse中设置在创建新类时自动生成注释
查看>>
我的友情链接
查看>>
CoreOS 手动更新
查看>>
golang 分页
查看>>