小编典典

在 Redux 应用程序中写入 localStorage 的位置?

all

我想将状态树的某些部分保存到 localStorage。什么是合适的地方这样做?减速机还是动作?


阅读 79

收藏
2022-06-27

共1个答案

小编典典

Reducer 永远不是一个合适的地方,因为 reducer 应该是纯的并且没有副作用。

我建议只在订阅者中执行此操作:

store.subscribe(() => {
  // persist your state
})

在创建商店之前,请阅读那些持久化的部分:

const persistedState = // ...
const store = createStore(reducer, persistedState)

如果您使用combineReducers(),您会注意到尚未收到状态的 reducer 将使用其默认state参数值正常“启动”。这可能非常方便。

建议您去抖动您的订阅者,这样您就不会太快地写入 localStorage,或者您会遇到性能问题。

最后,您可以创建一个封装它作为替代方案的中间件,但我从订阅者开始,因为它是一个更简单的解决方案并且可以很好地完成工作。

2022-06-27