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