Javascript 从其他减速器访问减速器?
我有一个学生列表,我的应用程序每次都会显示一个学生,ActiveStudio。到目前为止,我有两个减速机。其中一个包含并默认返回所有子项的列表(以数组的形式): …然后我有一个activePupilReducer,它包含当前正在查看的瞳孔。例如Javascript 从其他减速器访问减速器?,javascript,reactjs,redux,react-redux,flux,Javascript,Reactjs,Redux,React Redux,Flux,我有一个学生列表,我的应用程序每次都会显示一个学生,ActiveStudio。到目前为止,我有两个减速机。其中一个包含并默认返回所有子项的列表(以数组的形式): …然后我有一个activePupilReducer,它包含当前正在查看的瞳孔。例如 { id: 2 name: Donald } 现在我不知道如何迭代到下一个学生。当“UPDATE\u ACTIVE”操作被调度时,我希望我的activePupilReducer将活动学生更新为下一个学生。因此,我需要获取我学生的当前
{
id: 2
name: Donald
}
现在我不知道如何迭代到下一个学生。当“UPDATE\u ACTIVE”操作被调度时,我希望我的activePupilReducer将活动学生更新为下一个学生。因此,我需要获取我学生的当前id,对其进行迭代,然后从另一个reducer获取具有正确id的学生(或者我假设我必须这样做)。现在,我的activePupilReducer如下所示:
export default function (state={id: -1, name:"John"}, action) {
switch (action.type) {
case "UPDATE_ACTIVE":
// ??
default:
return state;
}
}
不知何故,我需要抓住另一个减缩器,然后抓住下一个元素,但我不知道该怎么做。在我看来,活动瞳孔和瞳孔列表本质上应该位于同一个减缩器中。例如,有一个状态为对象的瞳孔缩小器。然后像现在一样采取行动
同样说过,减量剂是为了避免任何副作用,因此不是你想要做的地方。你可以做的是计算出减速器/动作之外的下一个学生,例如,在某个组件中单击按钮,然后将其传递到更新活动动作,然后将其传递到减速器中,以设置为活动瞳孔。你的
activepubilreducer
的范围不够宽。它应该能够看到activepullow
键和pullows
数组工作
如果您使用的是组合减速机
,则可能没有授予它们访问彼此状态的权限。应将这两个还原器合并为一个,并使用以下状态结构:
{
pupils: [...]
activePupil: {...}
}
当您调用
UPDATE\u ACTIVE
操作时,此单减速器可以访问两个键并能够执行状态突变。因此,如果我理解正确,我完全走错了方向,试图在减速器中实现此功能?这很有趣,因为我现在在我的行动中有它,但我认为我在那里实现了一个反模式。我正在使用联合减缩器,所以,最后,我的商店看起来就像你引用的那个。如果我理解正确的话,我是否可以在我的组合reducer中实现这个函数,因为我需要访问这两个数据段?您的reducer应该可以访问这两个条目。您需要将它们放在存储区中的同一个键下,这样它们就可以被同一个减速机访问。所以,store={data:{products,activeproductor}}
{
pupils: [...]
activePupil: {...}
}