还原剂从来不是一个合适的地方,因为还原剂应该是纯的,没有副作用.
我建议在订阅者中这样做:
store.subscribe(() => {
// persist your state
})
在创建存储之前,请阅读这些持久化的部分:
const persistedState = // ...
const store = createStore(reducer, persistedState)
如果您使用combineReducers()
,您会注意到,没有收到状态的减缩器将使用默认的state
参数值正常"启动".这很方便.
建议您取消订阅服务器,这样就不会太快地写入localStorage,否则会出现性能问题.
最后,您可以创建一个中间件来将其封装为替代方案,但我会从订阅者开始,因为这是一个更简单的解决方案,而且工作做得很好.