反应中嵌套数组中的setState

Posted

技术标签:

【中文标题】反应中嵌套数组中的setState【英文标题】:setState in nested arrays in react 【发布时间】:2019-06-02 10:11:57 【问题描述】:

我有一个 React 状态对象,里面有两个数组。

this.state = 
  data2: 
    nodes: [id: 'input'],
    links: []
  ,
;

我想在一些用户操作后向这些数组添加新值,但我还没有找到正确的方法。到目前为止,我已经尝试过这样的事情:

this.setState([...this.state.data2, nodes: [...this.state.nodes, id: 'input2']]);

关于我应该如何实现它的任何想法?

【问题讨论】:

【参考方案1】:

我会推荐这样的东西

this.state =  
    data2: 
    nodes: [],
    links: []
  ,
;

当您设置状态时,您不必在 setState function 中使用 this 关键字

this.setState( data2: nodes: [id:'input1',id:'input2'] )

你也可以在节点数组中推送对象

let temp = data2
temp.nodes.push(id:'input3')
this.setState( data2:temp )

【讨论】:

这也可以工作.. this.setState( data2: Object.assign(, this.state.data2, nodes: [...this.state.data2.nodes, id: 'input1', id: 'input2'] ) )【参考方案2】:

这可以通过两种简单的方式完成。您使用传播运算符所做的一个。像这样的,

this.setState(data2: ...this.state.data2, nodes: [id: "input1"] );

或者你可以像这样使用[Object.assign()][1]

this.setState(data2: Object.assign(, this.state.data2, nodes: [id: "input1"]));

【讨论】:

以上是关于反应中嵌套数组中的setState的主要内容,如果未能解决你的问题,请参考以下文章

匹配 MongoDB 中嵌套子文档的嵌套数组

每半秒反应一次原生 SetState 数组 使 App 挂起大数据

mysql怎么在查询中嵌套子查询

将元素推送到数组时反应setstate不起作用

如何使用我的反应应用程序中的 useState 钩子给出的 setState 方法增加状态对象的选定索引的计数

在反应中更新嵌套状态