详解在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 相关文章推荐
关于document.cookie的使用javascript
Oct 29 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
Nov 25 Javascript
判断用户的在线状态 onbeforeunload事件
Mar 05 Javascript
使用 Node.js 做 Function Test实现方法
Oct 25 Javascript
js倒计时抢购实例
Dec 20 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
Jun 06 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
Jun 25 Javascript
Vue调试神器vue-devtools安装方法
Dec 12 Javascript
Vue2.0 v-for filter列表过滤功能的实现
Sep 07 Javascript
详解vue使用$http服务端收不到参数
Apr 19 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
Sep 25 Javascript
js实现消灭星星(web简易版)
Mar 24 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
把77A收信机改造成收音机
2021/03/02 无线电
基于PHP与XML的PDF文档生成技术
2006/10/09 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
利用PHP命令行模式采集股票趋势信息
2016/08/09 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
js no-repeat写法 背景不重复
2009/03/18 Javascript
asp.net刷新本页面的六种方法总结
2014/01/07 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python自动发邮件脚本
2017/03/31 Python
python 系统调用的实例详解
2017/07/11 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
详解Django中异步任务之django-celery
2020/11/05 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
2014年班务工作总结
2014/12/02 职场文书
感谢信模板大全
2015/01/23 职场文书
人事任命通知
2015/04/20 职场文书
vue项目支付功能代码详解
2022/02/18 Vue.js
详解PyTorch模型保存与加载
2022/04/28 Python
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS