详解在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 相关文章推荐
JavaScript 页面坐标相关知识整理
Jan 09 Javascript
制作高质量的JQuery Plugin 插件的方法
Apr 20 Javascript
js动态在form上插入enctype=multipart/form-data的问题
May 24 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
Nov 14 Javascript
原生JS和jQuery版实现文件上传功能
Apr 18 Javascript
异步加载JS、CSS代码(推荐)
Jun 15 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
Jul 01 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
Aug 28 Javascript
js实现下一页页码效果
Mar 07 Javascript
vue实现表格增删改查效果的实例代码
Jul 18 Javascript
基于node下的http小爬虫的示例代码
Jan 11 Javascript
vue-cli项目修改文件热重载失效的解决方法
Sep 19 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
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
php常用文件操作函数汇总
2014/11/22 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
jquery实现的判断倒计时是否结束代码
2016/02/05 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
Vue watch响应数据实现方法解析
2020/07/10 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
小学教师岗位职责
2013/11/25 职场文书
工程管理专业个人求职信范文
2013/12/07 职场文书
庆七一活动方案
2014/01/25 职场文书
给校长的建议书400字
2014/05/15 职场文书
放假通知
2015/04/14 职场文书
国博复兴之路观后感
2015/06/02 职场文书
焦点访谈观后感
2015/06/11 职场文书