首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >redux 使用 redux-persist 进行数据持久化

redux 使用 redux-persist 进行数据持久化

作者头像
用户9914333
发布于 2022-07-22 06:54:54
发布于 2022-07-22 06:54:54
4K00
代码可运行
举报
文章被收录于专栏:bug收集bug收集
运行总次数:0
代码可运行

0 1

redux-persist的介绍

在React项目中,我们会使用redux 来进行状态管理。redux和其它状态管理技术一样,刷新页面后,数据就会恢复成初始状态。

如何让数据实现持久化呢?大家应该都可想到了结合本地存储(localStorage 或 sessionStorage) 但每次的状态修改,都要去更改本地存储的数据工作量巨大,还容易出错。今天给大家推荐redux的一个插件redux-persist。redux-persist会将redux的store中的数据自动缓存到浏览器的 localStorage 中,不再需要单独去存储了。

0 2

redux-persist的使用

1、store.js 文件中的变化

首先,需要引入 persistStore, persistReducer

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import {persistStore, persistReducer} from 'redux-persist';

其次,执行persistReducer方法与persistStore方法,并行将persistStore方法的返回值导出

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import {createStore} from 'redux'
import reducers from '../reducers/index'
import {persistStore, persistReducer} from 'redux-persist';
import storage from 'redux-persist/lib/storage';
import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';
const persistConfig = {
    key: 'root',
    storage: storage,
    stateReconciler: autoMergeLevel2 // 查看 'Merge Process' 部分的具体情况
}
const myPersistReducer = persistReducer(persistConfig, reducers)
const store = createStore(myPersistReducer)
export const persistor = persistStore(store)
export default store

2、在index.js中,将PersistGate标签嵌套在redux内层

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React from 'react';
import ReactDOM from 'react-dom';
import {Provider} from 'react-redux'
import App from './App'
import store from './redux/store/store'
import {persistor} from './redux/store/store'
import {PersistGate} from 'redux-persist/lib/integration/react';
ReactDOM.render(<Provider store={store}>
            <PersistGate loading={null} persistor={persistor}>
               <App />
            </PersistGate>
        </Provider>, document.getElementById('root'));

3、最后,在浏览器中查看localStorage的值

你将发现数据已经存储到了localStorage中,刷新网页,redux中的数据也不会丢失

以上,就完成了使用redux-persist实现React持久化本地数据存储的简单应用

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bug收集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
社招前端常见react面试题(必备)_2023-02-26
每个React组件强制要求必须有一个 render()。它返回一个 React 元素,是原生 DOM 组件的表示。如果需要渲染多个 HTML 元素,则必须将它们组合在一个封闭标记内,例如 <form>、<group>、<div> 等。此函数必须保持纯净,即必须每次调用时都返回相同的结果。
用户10358021
2023/02/26
1.9K0
前端react面试题总结
如果您尝试直接改变组件的状态,React 将无法得知它需要重新渲染组件。通过使用setState()方法,React 可以更新组件的UI。
beifeng1996
2022/10/29
2.9K0
react高频面试题总结(附答案)
以 setState 为例,在 react 内部,每个组件(Fiber)的 hooks 都是以链表的形式存在 memoizeState 属性中
beifeng1996
2022/11/10
2.6K0
用 Redux 做状态管理,真的很简单🦆!
作为一名前端工程师,不少小伙伴对于 Redux 的概念、使用可能还是比较模糊,上手使用的心智负担也比较重!
小东同学
2022/07/29
3.8K0
用 Redux 做状态管理,真的很简单🦆!
React面试八股文(第一期)
在React项目中,通过redux存储全局数据时,会有一个问题,如果用户刷新了网页,那么通过redux存储的全局数据就会被全部清空,比如登录信息等。这时就会有全局数据持久化存储的需求。首先想到的就是localStorage,localStorage是没有时间限制的数据存储,可以通过它来实现数据的持久化存储。
beifeng1996
2022/10/18
3.7K0
9. redux如何精简代码
通过之前的代码不难看出redux系统里的ActionType、Action、Reducer都有一定的共性,小项目无所谓,这样写更清晰,但是一旦组件以及业务增多,开发效率就不是很高了。本来是打算使用第三方组件的,比如redux-actions(https://github.com/acdlite/redux-actions)等,但是实验了一下,功力不足反而没有成功,然后自己照抄官方说明写了一下,发现代码出乎意料的简单,核心代码直接照抄的官方文档,看官嫌我啰嗦可以直接跳过本文去原文档,中文、英文。下面就我自己的理解在此记录一下。 通过改造,下面是一个请求GitHub Search Repositories API的action的最终代码:
MasterVin
2018/08/30
1.2K0
9. redux如何精简代码
2023前端二面react面试题(边面边更)
JSX 是 JavaScript 语法的一种语法扩展,并拥有 JavaScript 的全部功能。JSX 生产 React "元素",你可以将任何的 JavaScript 表达式封装在花括号里,然后将其嵌入到 JSX 中。在编译完成之后,JSX 表达式就变成了常规的 JavaScript 对象,这意味着你可以在 if 语句和 for 循环内部使用 JSX,将它赋值给变量,接受它作为参数,并从函数中返回它。
beifeng1996
2023/01/02
2.9K0
美团前端react面试题汇总
服务端渲染是数据与模版组成的html,即 HTML = 数据 + 模版。将组件或页面通过服务器生成html字符串,再发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序。页面没使用服务渲染,当请求页面时,返回的body里为空,之后执行js将html结构注入到body里,结合css显示出来;
goClient1992
2022/09/13
5.6K0
使用Redux制作一个TodoList
在组件化开发的 web 前端当中,经常的需要在不同的组件之间进行通信以及一些数据共享,那么我们就需要使用像 Vuex 那样的状态管理工具,在 React 当中,经常使用 Redux 来做状态管理工具。
小小杰啊
2022/12/21
5440
使用Redux制作一个TodoList
手把手教你全家桶之React(二)
前言 上一篇已经讲了一些react的基本配置,本遍接着讲热更新以及react+redux的配置与使用。 热更新 我们在实际开发时,都有用到热更新,在修改代码后,不用每次都重启服务,而是自动更新。并而不
用户2145235
2018/05/18
1.8K0
Redux(一):基本概念
React是一个单向数据流的view层框架,单向数据流、组件化、生命周期是其特点。在React组件关系中,组件状态由自己管理,父子组件通过props传递;兄弟组件那么就需要一个共同的父组件作中转;如果涉及层级比较深的话一层一层传递会非常麻烦。所以大量状态共享是React单独难以解决的问题。
Ashen
2020/06/01
1.4K0
redux_todoList案例
上一节我们说到了redux的基础以及如何理解redux。这一节我们用经典的案例redux-todoList来具体的说一下每一个部分作何解释。
踏浪
2019/07/31
8850
《彻底掌握redux》之开发一个任务管理平台
redux是上手react开发的必经之路,也是目前react项目中使用的最流行状态管理库。虽然我们不使用redux也可以通过react的state和父子props进行基本的数据通信和项目开发,但是对于一个大型项目而言,往往考虑的更多的是代码结构和组件之间的通信,我们需要一种很优雅且有利于扩展的方式去开发我们的复杂系统,所以这种情况下使用redux是最佳的选择。
徐小夕
2020/02/27
1.2K0
《彻底掌握redux》之开发一个任务管理平台
react基础--2
react-redux需要配合 redux使用,react-redux可实现 redux与react的连接
切图仔
2022/09/08
1.4K0
Redux 入门教程(三):React-Redux 的用法
前两篇教程介绍了 Redux 的基本用法和异步操作,今天是最后一部分,介绍如何在 React 项目中使用 Redux。 为了方便使用,Redux 的作者封装了一个 React 专用的库 React-R
ruanyf
2018/04/12
2K0
Redux 入门教程(三):React-Redux 的用法
聊聊两个状态管理库 Redux & Recoil
React 是一个十分优秀的UI库, 最初的时候, React 只专注于UI层, 对全局状态管理并没有很好的解决方案, 也因此催生出类似Redux 这样优秀的状态管理工库。
皮小蛋
2020/08/25
3.8K0
聊聊两个状态管理库 Redux & Recoil
前端一面必会react面试题(持续更新中)
React Router 提供一个routerWillLeave生命周期钩子,这使得 React组件可以拦截正在发生的跳转,或在离开route前提示用户。routerWillLeave返回值有以下两种:
beifeng1996
2022/12/15
2K0
06-React状态管理 Redux(工作流程, 核心概念, 求和案例, 异步Action, React-Redux, 多状态管理, 纯函数, 高阶函数, Redux开发者工具)
其实就是一个集中的状态管理技术, 类似于VueX, 以及后端的分布式配置中心, 在前端的文章里提后端,是不是不太好~, 但是能学习这个技术的人, 从简短的一句话中应该就已经简单的了解了这个技术,以及它的使用情况, 我就不过多写概念了, 主要写使用方式
彼岸舞
2022/08/24
2.2K0
06-React状态管理 Redux(工作流程, 核心概念, 求和案例, 异步Action, React-Redux, 多状态管理, 纯函数, 高阶函数, Redux开发者工具)
React + Redux 开启 HMR/Hot Loader
最近在用 React 以及 Redux 写几个项目, 使用的是官方 Create-React-App 的脚手架, 默认没有开启 HMR, 每次都要等他自动刷新浏览器效率非常低, 因此考虑使用 HMR 模式
szhshp
2022/09/21
5320
Redux/react-redux/redux中间件设计实现剖析
在一切开始之前,我们首先要回答一个问题:为什么我们需要redux,redux为我们解决了什么问题?只有回答了这个问题,我们才能把握redux的设计思路。
Nealyang
2020/04/23
2.4K0
Redux/react-redux/redux中间件设计实现剖析
相关推荐
社招前端常见react面试题(必备)_2023-02-26
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档