我希望将状态树的某些部分持久化到localStorage.哪里才是合适的地方呢?减速剂还是动作剂?

推荐答案

还原剂从来不是一个合适的地方,因为还原剂应该是纯的,没有副作用.

我建议在订阅者中这样做:

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

在创建存储之前,请阅读这些持久化的部分:

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

如果您使用combineReducers(),您会注意到,没有收到状态的减缩器将使用默认的state参数值正常"启动".这很方便.

建议您取消订阅服务器,这样就不会太快地写入localStorage,否则会出现性能问题.

最后,您可以创建一个中间件来将其封装为替代方案,但我会从订阅者开始,因为这是一个更简单的解决方案,而且工作做得很好.

Javascript相关问答推荐

Angular /Typescript 应用中的传单

如何在json中运行循环,并使用vue js typescript将其与另一个数组映射来找到值的相关索引?

吉他和弦的JS reRegExp表情

在类型脚本中使用浏览器特定属性的正确方法是什么?

如何将剧作家请求对象转换为字符串,因为它只提供promise ?

响应式JS DataTable中的Bootstrap 5弹出程序无法正常工作

如何从defineExpose访问数据和方法

如何在react + react路由域名中使用DeliverBrowserRouter?

从外部访问组件变量-Vueejs

Redux查询多个数据库Api reducerPath&

如何找出摆线表面上y与x相交的地方?

为什么当我解析一个promise时,输出处于挂起状态?

未捕获错误:[]:getActivePinia()被调用,但没有活动Pinia.🍍""在调用app.use(pinia)之前,您是否try 使用store ?""

在我的html表单中的用户输入没有被传送到我的google表单中

如何通过使用vanilla JS限制字体大小增加或减少两次来改变字体大小

检索相加到点的子项

Nextjs 13.4 Next-Auth 4.2登录(&Quot;凭据&,{});不工作

MarkLogic-earch.suggest不返回任何值

在D3条形图中对具有相同X值的多条记录进行分组

更改agGRID/Reaction中的单元格格式