当前位置:   article > 正文

React之redux的持久化_redux持久化

redux持久化

目录

安装

配置 

效果


在使用redux的时候我们会发现state中的数据一旦刷新页面就会返回初始化状态,vue中的vuex也是如此,无法持久保存vuex中state数据的状态

想要在redux中解决这个问题,我们可以采用数据持久化插件,vuex中我们使用的是vuex-persist持久化插件,redux中我们可以使用redux-persist插件来完成数据持久化

安装

npm i redux-persist --save

可以在package.json查看是否安装成功

配置 

找到配置redux的store.js文件

 在文件中我们需要导入 redux-persist的两个依赖包,persistReducer, persistStore,分别用来配置保存的数据源和保存数据的方法

  1. import { createStore } from "redux";
  2. import han from './chereduce';
  3. //配置数据的持久化效果
  4. import { persistReducer, persistStore } from "redux-persist";
  5. //导入需要配置的数据源,可以选择,storage,cookie,session等
  6. import storage from "redux-persist/lib/storage";
  7. // let store=createStore(han)
  8. //定义配置的信息
  9. const persitConfig = {
  10. key:"root",
  11. storage:storage,
  12. // 如果不想将部分state持久化,可以将其放入黑名单(blacklist)中.黑名单是设置
  13. // blacklist: ['ll']
  14. }
  15. //创建持久化的配置persist的信息
  16. const persist_reducers = persistReducer(persitConfig,han);
  17. //创建存储对象并且抛出对象
  18. const store = createStore(persist_reducers);
  19. const persistor = persistStore(store);
  20. export { store, persistor };

在index.js入口文件中配置

 在入口文件中使用 PersistGate 包裹根组件。这将延迟渲染app 视图直到持久化状态取回并保存到redux中
导入对应抛出的store对象和persistor对象直接使用配置即可

  1. import React from 'react';
  2. import ReactDOM from 'react-dom/client';
  3. import { Provider } from 'react-redux';
  4. import { BrowserRouter } from 'react-router-dom';
  5. import { PersistGate } from 'redux-persist/lib/integration/react';
  6. import App from './App';
  7. import './index.css';
  8. import { persistor, store } from './redux/store';
  9. import reportWebVitals from './reportWebVitals';
  10. // import {persistor} from './redux/store'
  11. const root = ReactDOM.createRoot(document.getElementById('root'));
  12. store.subscribe(()=>{
  13. root.render(
  14. <Provider store={store}>
  15. <PersistGate loading={null} persistor={persistor}>
  16. <BrowserRouter>
  17. <App />
  18. </BrowserRouter>
  19. </PersistGate>
  20. </Provider>
  21. )
  22. })
  23. reportWebVitals();

效果

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/510770
推荐阅读
相关标签
  

闽ICP备14008679号