详解在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 相关文章推荐
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
Mar 21 Javascript
深入分析js中的constructor和prototype
Apr 07 Javascript
图片无缝滚动代码(向左/向下/向上)
Apr 10 Javascript
讨论html与javascript在浏览器中的加载顺序问题
Nov 27 Javascript
理解js对象继承的N种模式
Jan 25 Javascript
Node.js DES加密的简单实现
Jul 07 Javascript
前端 Vue.js 和 MVVM 详细介绍
Dec 29 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
Apr 22 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
Nov 22 Javascript
微信小程序绑定手机号获取验证码功能
Oct 22 Javascript
Vue+Element实现网页版个人简历系统(推荐)
Dec 31 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
Sep 18 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
晶体管来复再生式二管收音机
2021/03/02 无线电
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
2016/06/15 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
python自动化测试之连接几组测试包实例
2014/09/28 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
Queue 实现生产者消费者模型(实例讲解)
2017/11/13 Python
Python编程pygal绘图实例之XY线
2017/12/09 Python
Python实现两款计算器功能示例
2017/12/19 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
最新远光软件笔试题面试题内容
2013/11/08 面试题
do you have any Best Practice for testing
2016/06/04 面试题
客服主管岗位职责
2013/12/13 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
《都江堰》教学反思
2014/02/07 职场文书
财务学生的职业生涯发展
2014/02/11 职场文书
房产买卖委托公证书
2014/04/04 职场文书
社区义诊活动总结
2014/04/30 职场文书
和谐社区口号
2014/06/19 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书