首页 > 解决方案 > 如何处理不同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

在此处输入图像描述

标签: javascriptnode.jsreactjsreduxreact-redux

解决方案


您可能知道每个减速器都有自己的状态,因此例如userReducer您使用的是initialState, 所以

const initialState = {
  user: {},
  messages: []
};

上面的初始状态,它只用于 userReducer,所以它只是用户的命名空间,而不是共享交叉减速器,所以无论你做什么改变都userReducer只会影响它的状态,我的意思是user: {},如果你想更新messagesmessageReducer所以应该将你的逻辑移动到LOGIN_FAILURE打算影响的减速器,所以如果你也需要监听,你可以这样做,但只有当你需要影响与用户状态相关的东西而不是消息状态。LOGIN_FAILUREuserReducer


推荐阅读