详解在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 相关文章推荐
初学js插入节点appendChild insertBefore使用方法
Jul 04 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
Jan 11 Javascript
js使用正则实现ReplaceAll全部替换的方法
Jul 18 Javascript
影响jQuery使用的14个方面
Sep 01 Javascript
基于JavaScript操作DOM常用的API小结
Dec 01 Javascript
纯css下拉菜单 无需js
Aug 15 Javascript
jquery仿京东商品放大浏览页面
Jun 06 jQuery
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
Oct 26 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
Jan 25 Javascript
微信小程序实现横向增长表格的方法
Jul 24 Javascript
vue做移动端适配最佳解决方案(亲测有效)
Sep 04 Javascript
浅谈js闭包理解
Mar 28 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面向对象程序设计之接口用法
2014/08/20 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
新闻内页-JS分页
2006/06/07 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
nodeJS微信分享
2017/12/20 NodeJs
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
微信小程序实现音乐播放器
2019/11/20 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
构建Python包的五个简单准则简介
2015/06/15 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
django中模板的html自动转意方法
2018/05/27 Python
python计算n的阶乘的方法代码
2019/10/25 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
路政管理专业个人自荐信范文
2013/11/30 职场文书
员工晚婚的请假条
2014/02/08 职场文书
3的组成教学反思
2014/04/30 职场文书
2015年工程部工作总结
2015/04/30 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android
利用Apache Common将java对象池化的问题
2022/06/16 Servers