繁体   English   中英

react.js的this.setState()是同步还是异步?

[英]Is this.setState() of react.js synchronous or asynchronous?

请查看以下代码。 我试过在另一个下面调用setState 看起来从第二次setState调用返回的count始终设置为this.state.count 在这里,总是分配3

    class Counter extends React.Component {
    constructor(props){
        super(props);
        this.handleReset = this.handleReset.bind(this);
        this.state = {
            count : 0
        };
    }

    handleReset() {
        this.setState(() => {
            return {
                count: 1
            }
        });
        this.setState(() => {
            return {
                count: 3
            }
        });
    }
    render() {
        return (
            <div> 
                <h1>Count:{this.state.count}</h1>
                <button onClick={this.handleReset}>reset</button>
            </div>
        );
    }
  }
  ReactDOM.render(<Counter />, document.getElementById('app'));

根据React文档,它可以是异步的。

React可以将多个setState()调用批处理到单个更新中以提高性能。 由于this.props和this.state可能会异步更新,因此您不应依赖于它们的值来计算下一个状态

(原始来源和正确的代码示例)

setState是异步的。 您可以将callback作为第二个参数传递,并查看更新后的状态。

this.setState({ count: 5 }, () => {
  console.log(this.state.count) // 5
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM