详解在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代码压缩器
Oct 12 Javascript
JS面向对象编程之对象使用分析
Aug 19 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
Jul 31 Javascript
最好用的省市二级联动 原生js实现你值得拥有
Sep 22 Javascript
js中自定义方法实现停留几秒sleep
Jul 11 Javascript
js简单时间比较的方法
Aug 02 Javascript
vue cli使用绝对路径引用图片问题的解决
Dec 06 Javascript
深入理解requireJS-实现一个简单的模块加载器
Jan 15 Javascript
js 图片转base64的方式(两种)
Apr 24 Javascript
详解使用Next.js构建服务端渲染应用
Jul 10 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
Sep 21 Javascript
JavaScript canvas实现跟随鼠标事件
Feb 10 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
一个好用的分页函数
2006/11/16 PHP
php SQL之where语句生成器
2009/03/24 PHP
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
13个PHP函数超实用
2015/10/21 Javascript
详解JavaScript节流函数中的Throttle
2016/07/16 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
python在指定目录下查找gif文件的方法
2015/05/04 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
python实现音乐下载的统计
2018/06/20 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
营业员个人总结的自我评价
2013/10/25 职场文书
医药专业推荐信
2013/11/15 职场文书
四川成都导游欢迎词
2014/01/18 职场文书
《大禹治水》教学反思
2014/04/27 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS