一尘不染

在Redux应用中向哪里写入localStorage?

javascript

我想将状态树的某些部分持久保存到localStorage中。这样做的合适地点是什么?减速器或动作?


阅读 548

收藏
2020-05-01

共1个答案

一尘不染

减速器从来都不是执行此操作的合适位置,因为减速器应该是纯净的,没有副作用。

我建议仅在订阅服务器中执行此操作:

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

在创建商店之前,请阅读以下保留的部分:

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

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

建议您对订户进行反跳操作,以免写到localStorage的速度过快,否则会出现性能问题。

最后,您可以创建一个将其封装为替代方案的中间件,但我将从订户入手,因为它是一个更简单的解决方案,并且做得很好。

2020-05-01