为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

斯蒂芬大帝 2019-08-15 16:59:18
在Redux应用程序中写入localStorage的位置?我想将状态树的某些部分保存到localStorage。适当的地方是什么?减速器还是动作?
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

减速剂从来不是一个合适的地方,因为减速剂应该是纯净的,没有副作用。

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

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

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

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

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

建议你去掉你的用户,这样你就不会太快写入localStorage,或者你会遇到性能问题。

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


查看完整回答
反对 回复 2019-08-15
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

要填写丹阿布拉莫夫答案的空白,你可以这样使用store.subscribe()

store.subscribe(()=>{
  localStorage.setItem('reduxState', JSON.stringify(store.getState()))})

在创建商店之前,检查localStorage并解析您的密钥下的任何JSON,如下所示:

const persistedState = localStorage.getItem('reduxState') ? JSON.parse(localStorage.getItem('reduxState')) : {}

然后将此peristedState常量传递给您的createStore方法,如下所示:

const store = createStore(
  reducer, 
  persistedState,
  /* any middleware... */)


查看完整回答
反对 回复 2019-08-15
?
呼唤远方

TA贡献1856条经验 获得超11个赞

总之一句:中间件。

查看redux-persist。或者自己写。


查看完整回答
反对 回复 2019-08-15
  • 3 回答
  • 0 关注
  • 934 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号