react-几步搞定redux-persist-持久化存储

简介: 其实在vuex-persist持久化,用的也是这个东西这个东西 就是持久化,其实所谓的持久化,在前端而言,一般都是指存储到 localStorage里面,因为刷新也还在嘛,不像存在其他地方刷新就没了,这里不讨论存储到本地文件我们在react再玩一遍,看看有啥不同,找点新鲜感

1.前言


其实在vuex-persist持久化,用的也是这个东西

这个东西 就是持久化,其实所谓的持久化,在前端而言,一般都是指存储到 localStorage里面,因为刷新也还在嘛,不像存在其他地方刷新就没了,这里不讨论存储到本地文件

我们在react再玩一遍,看看有啥不同,找点新鲜感


2. 环境配置


安装 默认就是生产安装


npm i redux-persist



3. 存储


持久化这个一般都是我们的数据,更具体来说,就是我们状态管理的数据状态进行持久化.所以,这里直接在store里面进行配置,当然你在入口index或者其他地方配置未尝不可

简要步骤

  1. 引入相关文件


// 持久化存储 state
import { persistStore, persistReducer } from 'redux-persist'
import storage from 'redux-persist/lib/storage'


2.相关配置  准备

例如黑白名单


const persistConfig = {
    key: 'root',
    storage,
  }


3.持久化根reducer

reducer 当然根据你自己的名字来改


// 持久化根reducers
const persistedReducer = persistReducer(persistConfig, allReducers)


4.创建 持久化store对象


let store = createStore(persistedReducer )


5.持久化store对象


//最外层要导入
let persistor = persistStore(store);


6.导出 注意导出方式


export default store
export {persistor};

7.查看效果 localStorage已经有了

CK4A4N8A%ZQHABI)NK4(O[F.png

1.png

8.额外配置:例如黑名单,白名单等


const persistConfig = {
    key: 'root',
    storage,
    // 黑名单 不缓存的
    blacklist:['page404']
  }



4. 附上完整代码



// 存储器:用来管理状态(获取状态 、修改状态)
import { createStore } from 'redux'
// 引入合并函数
import { combineReducers } from 'redux'
import reducer404 from '../pages/404/store/reducer404'
import reducerAd from '../pages/address/store/reducerAd'
// 1. 引入相关文件
import { persistStore, persistReducer } from 'redux-persist'
import storage from 'redux-persist/lib/storage'
// 2.  配置
const persistConfig = {
    key: 'root',
    storage,
//黑名单 不缓存
    blacklist: ["page404"]
}
let allReducers = combineReducers({
    // 通过page404 找404 模块的reducer
       page404: reducer404,
       pageAddress:reducerAd
   })
// 3. 持久化根reducer和配置,并返回所有
const persistedReducer = persistReducer(persistConfig, allReducers)
// 4. 创建 持久化store对象
let store = createStore(persistedReducer)
// 5. 持久化store对象
let persistor = persistStore(store)
console.log("获取持久化存储信息:",persistor.getState())
// 6. 导出 注意导出方式
export default store
export { persistor }
// 7. 查看效果 localStorage已经有了
// 8. 额外配置 不想缓存某个模块 黑名单
// blacklist: ["page404"]



5. 持久化 到本地


1.默认会从 loaclStorage读取

2.可以避免多次请求


// redux存储器 react-redux 管理状态存储的容器
import store ,{persistor}from './store'
//注入器 负责把我们的 store 注入到全局 ,这样哪个组件都能用
import { Provider } from 'react-redux'
import { PersistGate } from 'redux-persist/integration/react'
ReactDOM.render(
  <React.StrictMode>
     <Provider store={store}>
      <PersistGate loading={null} persistor={persistor}>
        <App />
      </PersistGate>
    </Provider>
  </React.StrictMode>,
  document.getElementById('root')
);




相关文章
|
存储 JavaScript 前端开发
【React】redux数据持久化存储(react-redux、redux-RTK)
【React】redux数据持久化存储(react-redux、redux-RTK)
612 0
|
存储 JSON 前端开发
从零学React Native之13 持久化存储
数据持久化就是指应用程序将某些数据存储在手机存储空间中。 借助native存储 这种方式不言而喻,就是把内容传递给native层,通过原生API存储,详见从零学React Native之05混合开发 AsyncStorage API RN框架为开发者提供了 AsyncStorage API,开发者可以利用它将任意“字符串键值对”保存到存储空间中。 它是简单的
1813 0
|
5月前
|
缓存 前端开发 数据安全/隐私保护
如何使用组合组件和高阶组件实现复杂的 React 应用程序?
如何使用组合组件和高阶组件实现复杂的 React 应用程序?
229 68
|
5月前
|
缓存 前端开发 Java
在 React 中,组合组件和高阶组件在性能方面有何区别?
在 React 中,组合组件和高阶组件在性能方面有何区别?
212 67
|
5月前
|
前端开发 JavaScript 安全
除了高阶组件和render props,还有哪些在 React 中实现代码复用的方法?
除了高阶组件和render props,还有哪些在 React 中实现代码复用的方法?
224 62
|
8月前
|
移动开发 前端开发 API
React 音频播放器组件 Audio Player
本文介绍如何使用React创建音频播放器组件,涵盖核心功能如播放/暂停、进度条、音量控制和时间显示。通过HTML5 `&lt;audio&gt;` 元素和React的声明式状态管理,实现交互式音频播放。常见问题包括控件不响应、进度条无法更新和音量控制失灵,并提供解决方案。此外,还讨论了浏览器兼容性、异步错误处理和性能优化等易错点及避免方法。
606 123
|
7月前
|
前端开发 JavaScript
除了使用Route组件,React Router还有其他方式处理404错误页面吗
除了使用Route组件,React Router还有其他方式处理404错误页面吗
183 58
|
7月前
|
前端开发
React 中高阶组件的原理是什么?
React 中高阶组件的原理是什么?
192 57
|
7月前
|
前端开发 开发者
除了函数组件和类组件,React 还有其他创建组件的方式吗?
除了函数组件和类组件,React 还有其他创建组件的方式吗?
157 57
|
7月前
|
前端开发
如何在React Router中定义404错误页面组件?
如何在React Router中定义404错误页面组件?
172 57