更新嵌套数组和对象中的对象。对象->数组->对象->数组->“对象”

时间:2019-09-18 21:48:14

标签: javascript reactjs

如果我有一个对象todo作为状态的一部分,并且该对象包含数组lists,则在lists内有对象,而在这些对象内还有另一个数组{{1 }}。如何更新ID {:poi098“的数组listItems中的对象?

此处演示:https://stackblitz.com/edit/react-fjyb9g

listItems

2 个答案:

答案 0 :(得分:2)

您可以将嵌套数组更新为

this.setState(prevState => ({
   ...prevState,
   todo: {
      ...prevState.todo,
      lists: prevState.todo.lists.map( list => ({ 
        ...list,
        listItems: list.listItems.map( listItem => listItem.id === data.id ? data : listItem )
      }))
   }
}))

Demo

答案 1 :(得分:0)

我建议您阅读以下文章: https://reactjs.org/docs/update.html

import update from 'react-addons-update';

const newData = update(myData, {
  x: {y: {z: {$set: 7}}},
  a: {b: {$push: [9]}}
});