redux-persist - 如何将嵌套状态字段列入白名单?

redux-persist - how to whitelist nested state field?

我想在存储中保存一个完整的 reducer,并且只保存来自其他 reducer 的一个字段。我怎样才能做到这一点?我发现例如this gh issue,但所有尝试(来自 gh link 和其他来源)都失败了。

codesandbox example

const persistConfig = {
  key: "root",
  storage,
  whitelist: ["first"],
  transforms: [createWhitelistFilter("second", ["counter"])]
};

它适用于 first reducer,第二个没有任何反应,当我只想存储来自 reducer 的 counter 字段时。

有什么想法吗?

了解这个问题后,我编写了一个自定义转换器来保存第二个减速器的计数器字段。并避免保存整个对象。

我使用自定义转换器来实现功能。您可以通过 here

阅读更多相关信息

解决方案

const whiteList = createTransform(
  (inboundState, key) => {
    if (key === "second") {
      // This is saving to storage
      // Save only the counter field for second reducer
      return inboundState.counter;
    }
    return inboundState;
  },
  (outBoundState, key) => {
    if (key === "second") {
      // Receiving data from storage
      // add the saved counter field in reducer object
      return {
        name: "",
        counter: outBoundState
      };
    }
    return outBoundState;
  }
);

const persistConfig = {
  key: "root",
  storage,
  transforms: [whiteList]
};

我们只允许将计数器字段保存在存储中,并且在接收时将其添加到对象值中。

这是工作 sandbox