javascript - React.js 的 this.setState() 是同步还是异步?

标签 javascript reactjs

请查看以下代码。我尝试在另一个下面调用 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 may batch multiple setState() calls into a single update for performance. Because this.props and this.state may be updated asynchronously, you should not rely on their values for calculating the next state

(original source, and correct code example)

关于javascript - React.js 的 this.setState() 是同步还是异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50319687/

相关文章:

javascript - 通过 JavaScript 在编辑模式下打开文档

javascript - react native : How to set <TextInput/>'s height and width to <View/> container?

reactjs - iframe 的 useRef 使用什么类型

javascript - 删除列表 javascript 的项目点击上的粗体标签 <b></b>

javascript - Laravel 5 外部 JavaScript 文件_ JavaScript 堆栈

javascript - JQuery 顺序执行函数

Nodejs/async 中的 JavaScript 变量提升

javascript - 从条件渲染的 JSX 内部调用类方法

javascript - 重新渲染 React props.children

javascript - 无法从 ReactJS 中的事件处理程序访问对象