【问题标题】:Working with data on different global variables in Redux在 Redux 中处理不同全局变量的数据
【发布时间】:2017-02-20 06:16:03
【问题描述】:

想象一下,我需要从全局 Redux 变量中的人员数组中挑选一些元素,并将它们添加到另一个数组中,代表俱乐部的成员。为此,我使用了一个网格,它允许我选中元素对应行上的复选框,然后单击一个按钮将人员移动到俱乐部成员的数组中。

因此,有两个不同的全局变量:people、table 和 club(以及其中的成员数组)。当我检查每个元素时,我将一个人的 id 添加到 table 数组中的一个变量中,然后当我单击按钮时,具有这些 id 的人被转移到 club 变量中的 members 数组中。

这是我打算做的:

people = [{id:1, name:"John"},{id:2,name:"Sandy"}]
table = {selectedIds:[]}
club = {members:[]}

//check John's checkbox
people = [{id:1, name:"John"},{id:2,name:"Sandy"}]
table = {selectedIds:[1]}
club = {members:[]}

//click the add button
people = [{id:2,name:"Sandy"}]
table = {selectedIds:[]}
club = {members:[{id:1, name:"John"}]}

如何在 Redux 中做到这一点?最合适的方法是什么?减速器应该混合​​在一起吗?我的意思是:有没有办法只用两个动作来做到这一点,一个是在选择时(我自己已经能够做到),另一个是在单击按钮时?

我不想在单击按钮以将元素从具有像在表格中选择的那些 id 的人移动到俱乐部数组的成员时调度很多操作。

非常感谢

【问题讨论】:

  • 您好,您的问题太笼统了,您基本上是在询问 Redux 的工作原理。我建议你在 egghead.io egghead.io/courses/getting-started-with-reduxegghead.io/courses/… 上观看优秀的 Redux 课程
  • 抱歉,我已经编辑了问题。我不想做的是发送大量的操作,以便将具有所选 id 的人移动到 members 数组。

标签: arrays action redux reducers


【解决方案1】:

最简单的方法是使用单个 reducer,其中包含人员、桌子和俱乐部作为单独的数组。

那么您需要对每个事件都有操作:“CHECK”和“ADD”。

那么reducer需要做的就是监听“CHECK”并将对应的Id移动到table数组中。它还需要监听“ADD”并将相应的 Id 从 table 数组移动到 club 数组。

然后您可以为您需要的每个过滤器使用选择器。重新选择一个公共库:https://github.com/reactjs/reselect

希望这会有所帮助。

【讨论】:

  • 在将元素从 people 数组移动到 club 数组的成员时,没有办法使用单独的 reducer 来执行此操作而不必调度大量操作?因为我需要三个独立的减速器。
【解决方案2】:

显然,Redux 的创建者 Dan Abramov 已经给出了答案:https://gist.github.com/gaston23/cf6f40578524ddd085dd。动作可以在 reducer 之间共享。

【讨论】:

    猜你喜欢
    • 2020-04-19
    • 2021-07-22
    • 2011-01-10
    • 2021-12-15
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多