我想将状态树的某些部分持久保存到localStorage中。这样做的合适地点是什么?减速器或动作?
减速器从来都不是执行此操作的合适位置,因为减速器应该是纯净的,没有副作用。
我建议仅在订阅服务器中执行此操作:
store.subscribe(() => { // persist your state })
在创建商店之前,请阅读以下保留的部分:
const persistedState = // ... const store = createStore(reducer, persistedState)
如果您使用combineReducers()它,则会注意到尚未接收到该状态的reducers将使用其默认state参数值正常启动。这可能非常方便。
combineReducers()
state
建议您对订户进行反跳操作,以免写到localStorage的速度过快,否则会出现性能问题。
最后,您可以创建一个将其封装为替代方案的中间件,但我将从订户入手,因为它是一个更简单的解决方案,并且做得很好。