Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从其他减速器访问减速器?_Javascript_Reactjs_Redux_React Redux_Flux - Fatal编程技术网

Javascript 从其他减速器访问减速器?

Javascript 从其他减速器访问减速器?,javascript,reactjs,redux,react-redux,flux,Javascript,Reactjs,Redux,React Redux,Flux,我有一个学生列表,我的应用程序每次都会显示一个学生,ActiveStudio。到目前为止,我有两个减速机。其中一个包含并默认返回所有子项的列表(以数组的形式): …然后我有一个activePupilReducer,它包含当前正在查看的瞳孔。例如 { id: 2 name: Donald } 现在我不知道如何迭代到下一个学生。当“UPDATE\u ACTIVE”操作被调度时,我希望我的activePupilReducer将活动学生更新为下一个学生。因此,我需要获取我学生的当前

我有一个学生列表,我的应用程序每次都会显示一个学生,ActiveStudio。到目前为止,我有两个减速机。其中一个包含并默认返回所有子项的列表(以数组的形式):

…然后我有一个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: {...}
}