我有一个学生列表,我的应用程序始终显示一个学生,即activePupil。到目前为止,我有两个减速器。一个包含,默认情况下返回所有子项的列表(以数组的形式):

[
 {
    id: 1
    name: Barack
 },
 {
    id: 2
    name: Donald
 }
]


...然后我有一个activePupilReducer,其中包含正在查看的当前瞳孔。所以例如

 {
    id: 2
    name: Donald
 }


现在,我不知道如何迭代下一个学生。分派动作“ UPDATE_ACTIVE”时,我希望我的activePupilReducer将活动的Student更新为下一个学生。因此,我需要获取我的学生的当前ID,对其进行迭代,然后从另一个减速器中获取具有正确ID的学生(否则我就必须这样做)。现在,我的activePupilReducer看起来像这样:

export default function (state={id: -1, name:"John"}, action) {
  switch (action.type) {
      case "UPDATE_ACTIVE":
        // ??
      default:
        return state;
    }
}


我将以某种方式需要抓住另一个异径管并抓住下一个要素,但是我不知道该如何去做。

最佳答案

在我看来,活跃的学生和一系列学生本来应该生活在同一个减速器中。因此,例如,仅具有状态为对象的减光器。然后像现在一样执行操作。

还要说的是,还原剂是纯净无副作用的,因此并不是您想要的地方。您可以做的是计算减速器/动作之外的下一个学生,例如,在某些组件中单击按钮,然后将其传递到update_active动作,然后将其传递到减速器中以设置为活动瞳孔。

10-07 14:52