合并处于反应状态的对象

时间:2018-06-28 13:28:09

标签: javascript reactjs

我正在尝试使用这两个对象更新反应状态,其中一个是数组,另一个是对象

DumpNames = [], {ActiveTab: '0'}

因此,如果我将数组对象放入setState作为

this.setState({DumpNames})

然后它将与key-value创建DumpNames : []对。

如何将ActiveTab对象与DumpNames组合在一起。

即我想做

this.setState({DumpNames,{ActiveTab}})

但是,如果我尝试将这两个对象放入一个数组中然后进行销毁,那么它将正常工作。

 let myObjects = [{DumpNames : DumpNames, ActiveTab : ActiveTab}]
 this.setState(...myObjects)

除了以这种方式破坏之外,我还有其他方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:0)

最后一个例子

let myObjects = [{DumpNames : DumpNames, ActiveTab : ActiveTab}]
this.setState(...myObjects)

您正在破坏阵列。因此等于:

this.setState({ DumpNames, ActiveTab });

这使用了object literal property value shorthand,因此上面的值等于:

this.setState({
  DumpNames: DumpNames,
  ActiveTab: ActiveTab
});

所以也许您可以这样定义组件状态:

class Component extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      DumpNames: [],
      ActiveTab: '0',
    };
  }

  ...
}

然后您可以使用任一键修改状态:

this.setState({ DumpNames: ['John', 'Doe'] })

this.setState({ ActiveTab: '1' })

this.setState({ DumpNames: ['Hello', 'Bye'], ActiveTab: '3' })

this.setState({ DumpNames, ActiveTab: '3' });