详解在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 28 Javascript
JQuery each打印JS对象的方法
Nov 13 Javascript
jquery复选框checkbox实现删除前判断
Apr 20 Javascript
javascript检查某个元素在数组中的索引值
Mar 30 Javascript
聊一聊JavaScript作用域和作用域链
May 03 Javascript
Zepto实现密码的隐藏/显示
Apr 07 Javascript
JS+canvas画一个圆锥实例代码
Dec 13 Javascript
Vue.js图片预览插件使用详解
Aug 27 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
May 15 Javascript
原生Vue 实现右键菜单组件功能
Dec 16 Javascript
JavaScript 如何计算文本的行数的实现
Sep 14 Javascript
JS前端轻量fabric.js系列之画布初始化
Aug 05 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
Laravel 的数据库迁移的方法
2017/07/31 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
jquery ajax 登录验证实现代码
2009/09/23 Javascript
javascript 常用功能总结
2012/03/18 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
2017/04/28 jQuery
Bootstrap table使用方法记录
2017/08/23 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
tween.js缓动补间动画算法示例
2018/02/13 Javascript
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
2018/09/13 Javascript
express 项目分层实践详解
2018/12/10 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
pyqt和pyside开发图形化界面
2014/01/22 Python
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
Python删除n行后的其他行方法
2019/01/28 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
毕业生个人投资创业计划书
2014/01/04 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
同学聚会邀请函
2015/01/30 职场文书
琅琊山导游词
2015/02/05 职场文书
综治目标管理责任书
2015/05/11 职场文书
SQL CASE 表达式的具体使用
2022/03/21 SQL Server