首页 > 解决方案 > this.setState() 在 this.setState() 的回调中

问题描述

我可以this.setState()在传递给的回调定义中显式调用吗this.setState()?

this.setState(
 {
   openA:true 
 }, 
 () => {
   this.setState({
     openB: false
   })
 } 
)

标签: javascriptreactjssetstate

解决方案


可以这样做,这将导致 2 次重新渲染而不是 1 次。通常不需要这样做。

如果setState是独立的,它可以是:

this.setState({ openA:true });
this.setState({ openB:false });

如果更新状态相互依赖,则应使用 updater 函数:

this.setState({ openA:true });
this.setState(state => ({ openB: !state.openA }));

推荐阅读