详解在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 request函数 用来获取url参数
May 17 Javascript
JavaScript中继承的一些示例方法与属性参考
Aug 07 Javascript
jQuery图片的展开和收缩实现代码
Apr 16 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
Sep 04 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
Dec 15 Javascript
JavaScript实现动态添加,删除行的方法实例详解
Jul 02 Javascript
jQuery实现文本框邮箱输入自动补全效果
Nov 17 Javascript
悬浮广告方法日常收集整理
Mar 18 Javascript
javascript使用递归算法求两个数字组合功能示例
Jan 03 Javascript
jqgrid实现简单的单行编辑功能
Sep 30 Javascript
原生javascript实现文件异步上传的实例讲解
Oct 26 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
Dec 13 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
Snoopy类使用小例子
2008/04/15 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
javascript设计模式 接口介绍
2012/07/24 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
python 排列组合之itertools
2013/03/20 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
Python操作MySQL数据库9个实用实例
2015/12/11 Python
彻底理解Python list切片原理
2017/10/27 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
Django 使用logging打印日志的实例
2018/04/28 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
你懂得怎么写自荐信吗?
2013/12/27 职场文书
劳动竞赛活动总结
2014/05/05 职场文书
西湖英语导游词
2015/02/06 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
Nginx 负载均衡是什么以及该如何配置
2021/03/31 Servers
详解Java实现数据结构之并查集
2021/06/23 Java/Android
Redis+AOP+自定义注解实现限流
2022/06/28 Redis