详解在React-Native中持久化redux数据


Posted in Javascript onMay 22, 2019

在最近的一个项目中,要求对 redux 数据做持久化处理,经过研究后成功实现,在此记录一下过程

我们可以使用 redux-persist 对数据做持久化处理

安装

npm i --save redux-persist

使用

安装成功后,我们需要对 store 代码进行修改,这是我的 store 生成文件

import {applyMiddleware, createStore, compose} from 'redux';
import {createLogger} from 'redux-logger';
import thunk from 'redux-thunk';
import reducers from '../reducers';
import {persistStore, persistReducer} from 'redux-persist';
import storage from 'redux-persist/lib/storage'

const persistConfig = {
 key: 'milk', # 对于数据 key 的定义
 storage,  # 选择的存储引擎
}

# 对 reducers 的封装处理
const persistedReducer = persistReducer(persistConfig, reducers)


let loggerMiddleware = createLogger();

export default function configureStore() {
 const enhancers = compose(
  applyMiddleware(thunk, loggerMiddleware),
 );

 # 处理后的 reducers 需要作为参数传递在 createStore 中
 const store = createStore(persistedReducer, enhancers)

 # 持久化 store
 let persistor = persistStore(store)
 
 return {store, persistor}
}

在 react-native 中,存储引擎默认为 AsyncStorage

Android是以key=>value的形式存储在本地sqlite中

iOS 是直接存沙盒文件

其中还有很多可以配置的地方,大家自行参考官方文档

修改完生成 store 代码后,在入口文件做一次修改,需要引入 PersistGate 来进行二次的组装

import React, {Component} from 'react';
import {Provider} from 'react-redux';
import HomeContainer from './container/HomeContainer'
import configureStore from './redux/store'
import {PersistGate} from 'redux-persist/integration/react' # 看这里


const {store, persistor} = configureStore();

class App extends Component {
 render() {
  return (
   <Provider store={store}>
    
    <PersistGate loading={null} persistor={persistor}>
     <HomeContainer/>
    </PersistGate>

   </Provider>
  );
 }
}

export default App

简单配置即可,我们可以看一下效果

效果

详解在React-Native中持久化redux数据

参考文档

官方文档

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

Javascript 相关文章推荐
extjs 列表框(multiselect)的动态添加列表项的方法
Jul 31 Javascript
JS去除字符串的空格增强版(可以去除中间的空格)
Aug 26 Javascript
JavaScript中判断函数是new还是()调用的区别说明
Apr 07 Javascript
jQuery登陆判断简单实现代码
Apr 21 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
May 07 Javascript
document.getElementById获取控件对象为空的解决方法
Nov 20 Javascript
基于jQuery实现的美观星级评论打分组件代码
Oct 30 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
May 27 Javascript
利用bootstrapValidator验证UEditor
Sep 14 Javascript
浅谈jQuery框架Ajax常用选项
Jul 08 jQuery
Node.js进阶之核心模块https入门
May 23 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
Apr 11 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
May 22 #Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
May 22 #Javascript
jQuery Migrate 插件用法实例详解
May 22 #jQuery
自定义Vue组件打包、发布到npm及使用教程
May 22 #Javascript
Vue中的组件及路由使用实例代码详解
May 22 #Javascript
Vue侦测相关api的实现方法
May 22 #Javascript
一文快速详解前端框架 Vue 最强大的功能
May 21 #Javascript
You might like
php实现两个数组相加的方法
2015/02/17 PHP
php自动加载方式集合
2016/04/04 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
网上应用的一个不错common.js脚本
2007/08/08 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
2013/10/16 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
javascript实现跨域的方法汇总
2015/06/25 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
浅析Python中的多进程与多线程的使用
2015/04/07 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
使用Python对SQLite数据库操作
2017/04/06 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
linux面试题参考答案(5)
2016/11/05 面试题
国贸类专业毕业生的求职信分享
2013/12/08 职场文书
播音主持专业个人自我评价
2014/01/09 职场文书
《掌声》教学反思
2014/02/23 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
论文指导教师评语
2014/04/28 职场文书
企业宣传标语
2014/06/09 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
步步惊心观后感
2015/06/12 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis