javascript - 如何在对象中传播嵌套属性?

标签 javascript reactjs object data-structures

我在下面有这个对象。我想知道如何选择特定项目并更新属性。例如。 Item 1 我想在数组中添加一个任务。

item: {
  'item-1': {
    id: 'item-1',
    title: 'To do',
    task: ['task-1', 'task-2', 'task-3', 'task-4']
  },
  'item-2': {
    id: 'item-2',
    title: 'In progress',
    task: []
  },

我现在有

const getItem = {...state.items['item-1']}
const newTaskList = [...getItem.task, newTask.id]

const newState = {
      ...state,
      items: {
        ...state.items,
        //How do I spread new array correctly in item 1?
        //...state.items['item-1'].task
      }
    };

最佳答案

您需要使用对象键,即 item-1 并为其克隆属性,并为任务键添加新列表。简而言之,在覆盖要更新的键之前,您需要在对象的每个级别进行克隆

const newState = {
  ...state,
  items: {
    ...state.items,
    'item-1': {
         ...state.items['item-1'],
         task: newTaskList
     }
  }
};

关于javascript - 如何在对象中传播嵌套属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58833517/

相关文章:

javascript - Angular2事件: keyup exits input

javascript - 获取父节点 p 即使里面有另一个标签?

javascript - Three.js - 如何选择灯光/相机

reactjs - ReactJS 中的 WebSocket 正在使用空数组设置状态

c++ - 像测试指针一样测试 C++ 对象的有效性

javascript - JS 如何计算表达式 ({...}).objMethod()?

javascript - 我怎样才能遍历一个数组

javascript - jQuery 错误 TypeError : $. event.handle is undefined

javascript - 为什么不建议将 React 组件从受控切换为不受控?

node.js - React Native Ios 错误 - ENOENT : no such file or directory, uv_cwd (null))