当前位置: 首页 > 面试题库 >

Redux-如何在reducer中向数组添加条目

谭云瀚
2023-03-14
问题内容

我坚持了这一点,但我无法继续前进-我猜解决方案很简单,但我不知道。我正在尝试在reducer中添加条目,以便输入的数据看起来像这样:

state = {
  entryId: {
    entryName: ["something", "something2", "something3" /* and so on... */]
  }
};

到目前为止,这是我得到的最接近的内容,但是,它没有添加新的唯一条目,而是替换了已经存储的条目。另外,我还需要能够将此项目添加到entryId,entryName还不存在的空状态,以避免出现错误:

switch(type) {
  case ADD_ENTRY:
    return {
      ...state,
      [entryId]: {
        ...state[entryId],
        [entryName]: {
          [uniqueEntry]: true
        }
      }
    };
}

知道我在做什么错吗?


问题答案:

如果要在entryName数组的末尾添加元素,则应该执行以下操作:

return {
  ...state,
  [entryId]: {
    ...state[entryId],
    [entryName]: [
      ...state[entryId][entryName],
      uniqueEntry
    ]
  }
};

ES6与数组一起传播是这样的:

const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const eight = 8;

const newArray = ['stuff', ...array1, 'things', ...array2, ...[7, eight], 9];
console.log(newArray); // ["stuff", 1, 2, 3, "things", 4, 5, 6, 7, 8, 9]

查看这个要点,它有一个与您正在做的事情非常相似的示例。

我发现这组示例也非常有帮助。这里有很多很棒的东西:

https://github.com/sebmarkbage/ecmascript-rest-
spread

更新:

如果entryName初始化为undefined喜欢在评论中说的那样,则可以执行以下操作:

return {
  ...state,
  [entryId]: {
    ...state[entryId],
    [entryName]: [
      ...state[entryId][entryName] || [],
      uniqueEntry
    ]
  }
};

我认为这是一个很好的例子,说明了使用高度嵌套的数据结构与React / redux一起工作会多么痛苦。FWIW,曾多次向我建议尽量平缓您的状态。



 类似资料:
  • 问题内容: 我有一个化简器,为了计算新状态,我需要操作中的数据以及该化简器未管理的部分状态数据。具体来说,在下面将显示的减速器中,我需要访问该字段。 initialState.js: FormsReducer.js: index.js(根减速器): 如何访问此字段? 问题答案: 我将为此使用thunk,这是一个示例: 基本上,您会获得操作所需的所有数据,然后可以将该数据发送到减速器。

  • 问题内容: 假设采用以下架构,我尝试使用Mongoose保存一些GeoJSON数据 这就是我尝试保存文档的方式 但是,我在数据库中得到的是 看起来整个位置标签和数据都丢失了。这是定义架构的错误方法还是保存文档的错误方法? 问题答案: 当使用在嵌入式对象中命名的字段时,您需要使用一个对象来定义其类型,或者Mongoose认为您正在定义对象本身的类型。 因此,将您的架构定义更改为:

  • 问题内容: 在Bokeh指南中,可以创建各种条形图的示例。http://docs.bokeh.org/en/0.10.0/docs/user_guide/charts.html#id4 此代码将创建一个: 我的问题是是否可以向图表的每个单独的条形添加数据标签?我在网上搜索,但找不到明确的答案。 问题答案: 使用标签集 使用Labelset在每个单独的条形上方创建标签 在我的示例中,我将vbar与绘

  • 我对react很陌生(我只使用过abit类),我想把输入值添加到并在屏幕上写出来,但我的大脑被锁住了,我不知道如何...

  • 本文向大家介绍如何在JavaFX中向图像添加滚动条?,包括了如何在JavaFX中向图像添加滚动条?的使用技巧和注意事项,需要的朋友参考一下 滚动条包含附加到可滚动窗格的拇指,左右按钮。使用此功能,您可以上下滚动窗格(附加到窗格)。 在JavaFX中,javafx.scene.control.ScrollBar表示滚动条。您可以创建一个实例化此类的滚动条。通常,滚动条与其他控件关联,例如Scroll

  • 问题内容: 我有以下代码: 这两个附录未编译。那将如何正常工作? 问题答案: 数组的大小无法修改。如果需要更大的数组,则必须实例化一个新数组。 更好的解决方案是使用可以根据需要增长的容器。如果你需要此形式的数组,该方法将为你提供数组。 如果需要将其转换为简单数组… 但是,使用数组执行的大多数操作也可以使用此ArrayList进行: