javascript - 在 react 状态下将列表中的项目插入到另一个列表中

标签 javascript reactjs

我的状态有这个变量:

this.state = {
        itemList: {
            item: [
                {
                    itemAlias: [
                        {
                            name: null
                        }
                    ],
                    idItem: null,
                    itemName: null,
                }
            ]
        }
    }

我想要做的是在某个项目上插入一个新的项目别名。我这样做了,它向我的项目插入了一个新的项目别名,但同时也创建了一个新的项目,我不想那样,我只想使用新的项目别名更新我的项目:

insertAliasToList = (itm) => {
    let insertedAlias = {
        name: 'test'
    }

    itm.itemAlias.push(insertedAlias)

    this.setState(prevState => ({
        ...prevState,
        itemList: {
            ...prevState.itemList,
            item: [...prevState.itemList.item, p]
        }
    }))
}

我也尝试过此操作,但出现错误 Uncaught TypeError: Invalid attempts to spread non-iterable instance。

insertAliasToList = (itm) => {
    let insertedAlias = {
        name: 'test'
    }

   // itm.itemAlias.push(insertedAlias)

    this.setState(prevState => ({
        ...prevState,
        itemList: {
            ...prevState.itemList,
            item: {
                ...prevState.itemLIst.item,
                itemAlias:[...prevState.itemList.item.itemAlias,insertedAlias]
            }
        }
    }))
}

提前致谢!

最佳答案

由于您正在尝试替换数组中项目的内容,因此您需要首先复制该数组。然后使用索引替换该项目中所需的内容,并使用新数组再次设置状态。

let insertedAlias = {
  name: 'test'
}

// Duplicate 'item' array
const item = [...this.state.itemList.item]

// Change item using index '0' on the duplicated array
item[0] = {
  ...item[0],
  itemAlias: [
    ...item[0].itemAlias,
    insertedAlias,
  ]
}

// Set state with new item array that contains changes you made
this.setState(prevState => ({
  ...prevState,
  itemList: {
    ...prevState.itemList,
    item: [
      ...item,
    ]
  }
}))

关于javascript - 在 react 状态下将列表中的项目插入到另一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56206937/

相关文章:

javascript - 如何比较 2 个 json 数组并基于匹配构造第三个 json 数组

javascript - 异步加载 json 作为对象属性,然后在事件中访问它

testing - 如何不到处放 "use strict"

reactjs - React-Redux 提供程序不工作

javascript - 尽管我可以在控制台上看到 Blob 图像,但它不会显示在 UI 上

javascript - 在 Rally SDK 中,显示 UI 组件中的隐藏字段

javascript - JSON解析错误: unrecognised token <

javascript - 在 IE9 中 javascript 不起作用,但打开控制台后它可以工作

javascript - 在 react 中从图表 js-2 在圆环图中添加文本

javascript - React子组件props : _this2. props.delete它不是一个函数