首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用redux-persist持久化嵌套的状态对象

使用redux-persist持久化嵌套的状态对象
EN

Stack Overflow用户
提问于 2018-11-11 12:42:53
回答 2查看 2.7K关注 0票数 3

我正在尝试使用redux-persist API来持久化我的状态。我的状态结构如下。

代码语言:javascript
运行
复制
var initState = {
  searchInp: "",
  allProducts: {},
  isProductDtlsLoading: true
};

其中allProducts是一个嵌套的对象数组,每个对象结构如下:

代码语言:javascript
运行
复制
allProducts : {
004: {
   defaultOffer: null
   mrp: 550
   productData: [{…}]
   productName: "Hair Dryer"
   productQty: 0
   sellingPrice: 450
   prodCode: "004"
   }
}

现在,当我尝试持久化数据时,我可以看到Chrome开发人员工具在应用程序选项卡中,searchInp的值保持得很好,不会因为页面刷新而丢失。在这种情况下,我如何持久化像productQty这样的嵌套对象属性?

index.js

代码语言:javascript
运行
复制
import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import * as serviceWorker from "./serviceWorker";
import { Provider } from "react-redux";
import { createStore, applyMiddleware } from "redux";
import rootReducer from "./Store/Reducers/reducer";
import thunk from "redux-thunk";
import { persistStore, persistReducer } from "redux-persist";
import storage from "redux-persist/es/storage/session";
import { PersistGate } from "redux-persist/lib/integration/react";
import hardSet from "redux-persist/lib/stateReconciler/hardSet";

const persistConfig = {
  key: "root",
  storage: storage,
  stateReconciler: hardSet
};

var pReducer = persistReducer(persistConfig, rootReducer);

var store = createStore(pReducer, applyMiddleware(thunk));
var persistor = persistStore(store);

var app = (
  <Provider store={store}>
    <PersistGate persistor={persistor} loading={null}>
      <App />
    </PersistGate>
  </Provider>
);

ReactDOM.render(app, document.getElementById("root"));
EN

回答 2

Stack Overflow用户

发布于 2018-11-13 16:05:02

我的应用程序中有非常复杂的状态,这种方式对我来说很好:https://stackoverflow.com/a/37690899/7317796

票数 0
EN

Stack Overflow用户

发布于 2018-11-30 05:08:05

最有可能的是,你正在改变你的状态,而不是替换成新的状态。redux-persist依赖于这样一个事实,即状态是不可变的,它应该正确地持久化更改,除非它们发生了变化,请参阅此处的讨论https://github.com/rt2zz/redux-persist/issues/623。因此,请确保正确更新状态,而使用嵌套对象可能会很棘手,以下是有关Cleaner/shorter way to update nested state in Redux?的一些信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53245915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档