我有一份学生列表,我的应用程序始终显示当时的一个学生,即 activePupil。到目前为止我有两个 reducer 。其中一个包含并默认返回所有子项的列表(以数组的形式):
[
{
id: 1
name: Barack
},
{
id: 2
name: Donald
}
]
...然后我有一个 activePupilReducer,其中包含当前正在查看的瞳孔。所以例如
{
id: 2
name: Donald
}
现在我不知道如何迭代到下一个学生。当调度“UPDATE_ACTIVE”操作时,我希望我的 activePupilReducer 将事件学生更新为下一个学生。因此,我需要获取学生当前的 id,迭代它,然后从另一个 reducer 中获取具有正确 id 的学生(或者这就是我认为我必须做的事情)。现在我的 activePupilReducer 看起来像这样:
export default function (state={id: -1, name:"John"}, action) {
switch (action.type) {
case "UPDATE_ACTIVE":
// ??
default:
return state;
}
}
我会以某种方式需要捕获另一个 reducer 并捕获下一个元素,但我不知道如何去做。
最佳答案
在我看来,事件学生和学生列表本质上应该位于同一个 reducer 内。例如,只有一个瞳孔缩小器,其状态是一个对象。然后像现在一样采取行动。
话虽如此, reducer 应该是纯粹的,没有任何副作用,因此不是做你想做的事情的地方。您可以做的是计算您的 reducer /操作之外的下一个学生,例如在某个组件中单击按钮,然后将其传递给您的 update_active 操作,然后将其传递到您的 reducer 以设置为事件学生。
关于javascript - 从不同的 reducer 访问 reducer ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43069370/