设置嵌套数组的状态

Chi*_*ans 3 javascript arrays reactjs

我有这门课:

class Board {
    this.state = {
        lists : [{
            id: 0, 
            title: 'To Do',
            cards : [{id : 0}]
        }]
    }
Run Code Online (Sandbox Code Playgroud)

并且想在“lists”状态数组内的“cards”数组上使用setState。以前,我在子组件中有卡数组,但现在我已将其移至 Board 类。这是我之前的功能。

deleteCards(id){
    this.setState({
        cards: this.state.cards.filter(card => card.id !== id)
    });
}
Run Code Online (Sandbox Code Playgroud)

我如何更改它以便它现在可以工作,因为卡片在另一个阵列中?

我无法通过查看这些帖子来解决它:

ReactJS - 数组中对象键的 setState

如何编辑状态数组中的项目?

chr*_*bot 5

要在内部完成所有操作setState(请注意, 的第一个参数setState是更新程序函数,第一个参数是对前一个状态的引用):

如果您可以提供listId来自来电者的信息:

deleteCards(listId, cardId) {
  this.setState(prevState => ({
    lists: prevState.lists.map((list) => {
      if (list.id !== listId) {
        return list
      }

      return {
        ...list,
        cards: list.cards.filter(card => card.id !== cardId) 
      }
    })
  }))
}
Run Code Online (Sandbox Code Playgroud)

如果您无法提供listId来自来电者的信息:

deleteCards(id) {
  this.setState(prevState => ({
    lists: prevState.lists.map((list) => {
      if (list.cards.some(card => card.id === id)) {
        return {
          ...list,
          cards: list.cards.filter(card => card.id !== id) 
        }
      }

      return list
    })
  }))
}
Run Code Online (Sandbox Code Playgroud)