javascript - 如何处理不同reducer的状态以触发react redux中的通知
问题描述
如果某些消息通知触发,我如何将存储中的根状态从一个减速器更新到另一个减速器。我想在用户登录时更改商店的消息状态,并希望在顶级 MESSAGE 组件上显示该消息。我想在调度 LOGIN_FAILURE 操作时从 userReducer 更改消息状态。但它正在更新 initialState.user.messages 本身的消息,但我想在 initialState.messages 中更新,而不是在 initialState.user.messages 中更新。
我怎样才能做到这一点 ?
调度 LOGIN_FAILURE 操作。
初始状态.js
createStore 中使用的 rootReducer.js
userReducer.js
messageReducer.js
使用 MESSAGE 组件的 App.js
解决方案
您可能知道每个减速器都有自己的状态,因此例如userReducer
您使用的是initialState
, 所以
const initialState = {
user: {},
messages: []
};
上面的初始状态,它只用于 userReducer,所以它只是用户的命名空间,而不是共享交叉减速器,所以无论你做什么改变都userReducer
只会影响它的状态,我的意思是user: {}
,如果你想更新messages
,messageReducer
所以应该将你的逻辑移动到LOGIN_FAILURE
打算影响的减速器,所以如果你也需要监听,你可以这样做,但只有当你需要影响与用户状态相关的东西而不是消息状态。LOGIN_FAILURE
userReducer
推荐阅读
- css - CSS:带有后代选择器(空格)的通用兄弟选择器(~)
- xml - 根据 XML 文件中的信息重命名多个 PDF 文件
- angular - 如何打印这种数据,显示找不到类型为“对象”的不同支持对象“[对象对象]”。NgFor 只支持绑定
- java - 如何在java中对两个字段(日期和布尔值)比较器进行排序
- django - 如何在 django 中为用户分配批量配置文件
- python - While 循环中断 Flask 服务器
- bash - 提交 Python 脚本到 google 计算 VM 实例,运行、存储结果并停止实例
- dns - 我如何知道 DNS NS 类型记录何时设置正确?
- c++ - 创建 OpenCV 非免费版本 v4.3 时出错,collapsable.cpp -errors C2039、2605
- jquery - 向导步骤应该适用于 BACK 和 CONTINUE 按钮