【问题标题】:Will code after setState() in React be run?React 中 setState() 之后的代码会运行吗?
【发布时间】:2019-03-11 10:20:42
【问题描述】:

试图理解 setState() 在 React 中的工作原理。我的问题是这个。

如果我有一个函数,其中一行是 setState(),那么在重新渲染之前,这行之后的代码行是否仍会运行?例如,在下面的代码中,

foo(value) {
     this.setState({stateValue: value});
     console.log("Stuff after setState");
}

在该代码中,console.log 是否保证运行?它在我测试时运行,但我不确定这是否只是因为 React 还没有时间重新渲染。我可以期望 this.setState() 之后的代码运行吗?

【问题讨论】:

    标签: reactjs setstate


    【解决方案1】:

    setStateasynchronous 函数,就像任何异步函数被传递到事件循环一样,setState 也被传递到事件循环,并且它之后的任何代码都将无缝执行。

    一旦 setState 方法执行完毕,就会触发 render 方法,也就是 React 处理文档渲染的时候。

    【讨论】:

      【解决方案2】:

      让我们看看setState documentation

      将 setState() 视为更新组件的请求而不是立即命令

      React 不保证立即应用状态更改

      将其视为setTimeout(function test() {...}, 0); 将向队列中添加一条消息,直到所有堆栈为空时才会触发test 函数。你可以在EventLoop documentation找到更多信息

      【讨论】:

        猜你喜欢
        • 2017-12-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-21
        • 2015-05-18
        • 2011-04-09
        • 2015-08-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多