React通过redux-persist持久化数据存储的方法示例


Posted in Javascript onFebruary 14, 2019

在React项目中,我们经常会通过redux以及react-redux来存储和管理全局数据。但是通过redux存储全局数据时,会有这么一个问题,如果用户刷新了网页,那么我们通过redux存储的全局数据就会被全部清空,比如登录信息等。

这个时候,我们就会有全局数据持久化存储的需求。首先我们想到的就是localStorage,localStorage是没有时间限制的数据存储,我们可以通过它来实现数据的持久化存储。

但是在我们已经使用redux来管理和存储全局数据的基础上,再去使用localStorage来读写数据,这样不仅是工作量巨大,还容易出错。那么有没有结合redux来达到持久数据存储功能的框架呢?当然,它就是redux-persist。redux-persist会将redux的store中的数据缓存到浏览器的localStorage中。

redux-persist的使用

1、对于reducer和action的处理不变,只需修改store的生成代码,修改如下

import {createStore} from 'redux'
import reducers from '../reducers/index'
import {persistStore, persistReducer} from 'redux-persist';
import storage from 'redux-persist/lib/storage';
import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';

const persistConfig = {
 key: 'root',
 storage: storage,
 stateReconciler: autoMergeLevel2 // 查看 'Merge Process' 部分的具体情况
};

const myPersistReducer = persistReducer(persistConfig, reducers)

const store = createStore(myPersistReducer)

export const persistor = persistStore(store)
export default store

2、在index.js中,将PersistGate标签作为网页内容的父标签

import React from 'react';
import ReactDOM from 'react-dom';
import {Provider} from 'react-redux'
import store from './redux/store/store'
import {persistor} from './redux/store/store'
import {PersistGate} from 'redux-persist/lib/integration/react';

ReactDOM.render(<Provider store={store}>
   <PersistGate loading={null} persistor={persistor}>
    {/*网页内容*/}
   </PersistGate>
  </Provider>, document.getElementById('root'));

这就完成了通过redux-persist实现React持久化本地数据存储的简单应用

3、最后我们调试查看浏览器中的localStorage缓存数据

React通过redux-persist持久化数据存储的方法示例

发现数据已经存储到了localStorage中,此时刷新网页,redux中的数据也不会丢失

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript小数四舍五入多种方法实现
Dec 23 Javascript
jquery控制左右箭头滚动图片列表的实例
May 20 Javascript
两个select多选模式的选项相互移动(示例代码)
Jan 11 Javascript
js中的json对象详细介绍
Oct 29 Javascript
微信小程序 页面传值详解
Mar 10 Javascript
微信JS SDK接入的几点注意事项(必看篇)
Jun 23 Javascript
Vue.js如何实现路由懒加载浅析
Aug 14 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
Sep 04 Javascript
新手vue构建单页面应用实例代码
Sep 18 Javascript
Vue 引入AMap高德地图的实现代码
Apr 29 Javascript
原生JavaScript实现五子棋游戏
Nov 09 Javascript
关于uniApp editor微信滑动问题
Jan 15 Javascript
微信小程序实现简易table表格
Jun 19 #Javascript
微信小程序制作表格的方法
Feb 14 #Javascript
手把手带你封装一个vue component第三方库
Feb 14 #Javascript
微信小程序实现简单表格
Feb 14 #Javascript
手挽手带你学React之React-router4.x的使用
Feb 14 #Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
Feb 14 #jQuery
vue中各种通信传值方式总结
Feb 14 #Javascript
You might like
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
mysql5详细安装教程
2007/01/15 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
Js获取事件对象代码
2010/08/05 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
2012/12/09 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
webpack中使用iconfont字体图标的方法
2018/02/22 Javascript
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
JavaScript前后端JSON使用方法教程
2020/11/23 Javascript
python回调函数用法实例分析
2015/05/09 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
python 如何对logging日志封装
2020/12/02 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
CSS3 实现footer 固定在底部(无论页面多高始终在底部)
2019/10/15 HTML / CSS
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
大学毕业生通用求职信
2013/09/28 职场文书
好的促销活动方案
2014/08/21 职场文书
售后客服个人自我评价
2014/09/14 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
劳模事迹材料范文
2014/12/24 职场文书
东京审判观后感
2015/06/01 职场文书
中学教师教学工作总结
2015/08/13 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
python如何查找列表中元素的位置
2022/05/30 Python
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers