javascript - 更新对象属性中的数组

标签 javascript reactjs

我有一个这样定义的对象:

import React, { Component } from 'react';
import './App.css';

class App extends Component {

  constructor() {
    super();
    this.state = {
    lists: ["Dogs", "Cats"],
    items: {Dogs:[], Cats:[]}
    };
  }

  handleAddItem(item) {
    console.log(this.props.idName);
    console.log(item);
  }

我有变量

console.log(this.props.idName)// output: Dogs
console.log(item);// output {name: "lofi"}  

我不知道如何更新对象项{}以使其变成这样:

items{Dogs:[{name: "lofi"}], Cats:[]}

最佳答案

要更新嵌套的 Array 子状态,可以使用扩展运算符追加元素

handleAddItem = item => {
  this.setState((prevState, props) => ({
    items: {
      ...prevState.items,
      [props.idName]: [
        ...prevState.items[props.idName],
        item
      ]
    }
  }))
}

关于javascript - 更新对象属性中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50677537/

相关文章:

node.js - postgres 错误 : invalid input syntax for integer: ""

javascript - 如果我在文本区域中按住某个键,如何仅显示一个键

javascript - 检查传入的参数是否在数组对象中

javascript - 如何将字符串传递给使用 emscripten 为 WebAssembly 编译的 C 代码

javascript - 如何将单一品牌的所有产品组合在一起 - Angular JS

javascript - Modal 内的 slider 不起作用 - React + Material UI

javascript - 用于用 JavaScript 解析的 Golang JSON 编码

javascript - React 状态管理解决方案与 props

css - 如何从 Material UI TextField React 组件中删除 flex 边框和插入框阴影?

javascript - react 组件的导出语法