Javascript 避免React setState()回调循环

Javascript 避免React setState()回调循环,javascript,reactjs,Javascript,Reactjs,我试图同时设置多个状态属性,但由于setState是异步的,所以我必须使用回调,但随着我必须同时编辑更多属性,这段代码变得越来越难看 有没有其他好办法来实现这一点 this.setState( { item_1: true }, (e => { this.setState( { item_2: false }, (e => { this.setState( {

我试图同时设置多个状态属性,但由于setState是异步的,所以我必须使用回调,但随着我必须同时编辑更多属性,这段代码变得越来越难看

有没有其他好办法来实现这一点

this.setState(
  {
    item_1: true
  },
  (e => {
    this.setState(
      {
        item_2: false
      },
      (e => {
        this.setState(
          {
            item_3: 'Hello World'
          }
        )
      })
    )
  })
)

很有可能一次完成所有设置,如下所示:

this.setState({
    item_1: true,
    item_2: false,
    item_3: 'Foo'
});

如果在状态更改后仍要进行某些更改,则仍然可以使用回调函数进行此更改。像setState{obj}一样,回调

很有可能一次完成所有设置,如下所示:

this.setState({
    item_1: true,
    item_2: false,
    item_3: 'Foo'
});

如果在状态更改后仍要进行某些更改,则仍然可以使用回调函数进行此更改。像setState{obj}一样,回调

@HoriaComan的答案是正确的,但需要提供更多信息

是的,setState是异步的,但当您的其他输入依赖于以前的输出时,异步行为开始发挥作用

在您的情况下,所有状态值都是独立的。因此,您可以直接将状态设置为

this.setState({
    item_1: true,
    item_2: false,
    item_3: 'Foo'
});
例如,当您想在设置更新状态之后使用更新状态时,您需要使用回调

this.setState({
    item_1: true,
    item_2: false,
    item_3: 'Foo'
}, ()=> {
     console.log(this.state.item_1, this.state.item_2, this.state.item_3);
});

@HoriaComan的回答是正确的,但提供了更多信息

是的,setState是异步的,但当您的其他输入依赖于以前的输出时,异步行为开始发挥作用

在您的情况下,所有状态值都是独立的。因此,您可以直接将状态设置为

this.setState({
    item_1: true,
    item_2: false,
    item_3: 'Foo'
});
例如,当您想在设置更新状态之后使用更新状态时,您需要使用回调

this.setState({
    item_1: true,
    item_2: false,
    item_3: 'Foo'
}, ()=> {
     console.log(this.state.item_1, this.state.item_2, this.state.item_3);
});

为什么您认为一次只能更新一个值?为什么您认为一次只能更新一个值?