Redux在另一个reducer中更新状态

时间:2018-06-05 23:46:13

标签: javascript reactjs redux reducers

设置

在我的应用程序中,我有学生分配作业。每次创建学生时,我会循环完成当前的作业并为每个学生更新作业数组。

我的问题是当我创建作业时。这个作业不仅要创作,而且我需要在创作后将其分配给特定的学生。

我已将我的应用程序分成三个缩减器;上课,学生和家庭作业。

问题

如何从家庭作业减速器更新我的学生状态?我需要等到创建作业,然后在每个学生中分配作业数组。也许我可以发出一个动作而不是另一个动作?

case actionTypes.CREATEHOMEWORKS:
    // Get new homework description
    const newHomework = action.newHomework
    // Get the currently active class
    const activeClass = action.activeClass.key;
    // Get users current browser data
    const dateCreated = getCurrentDate();
    // Generare a new UID
    const key = guid();
    // Create a new homework object
    const homework = { key: key, class: activeClass, dateCreated: dateCreated, description: newHomework };
    // Get the current homework array
    const homeworks = JSON.parse(JSON.stringify(state.homeworks));
    // Combine current homework with new homework object.
    homeworks.push(homework);

    // I now need to update students to have this homework but they are handled
    // in another state

enter image description here

1 个答案:

答案 0 :(得分:1)

你的reducer应该是一个纯函数 - 也就是说,给定相同的输入,它将始终生成相同的输出。您在reducer中生成一个随机GUID,因此相同的输入永远不会给出相同的输出。如果您要将GUID生成移动到您的操作,则可以将其传递到CREATEHOMEWORK操作的有效内容中,然后在ASSIGNHOMEWORK减少器处理的students操作中调度它