试图了解React中setState()的工作原理。我的问题是这个。
如果我有其中一行是setState()的函数,那么在重新渲染之前,该行之后的代码行是否仍将运行?例如,在下面的代码中,
foo(value) {
this.setState({stateValue: value});
console.log("Stuff after setState");
}
在该代码中,console.log是否一定能运行?它在我测试时运行,但是我不确定这是否仅是因为React还没有时间重新渲染。我可以期望this.setState()之后的代码运行吗?
答案 0 :(得分:6)
setState
是asynchronous
函数,就像将任何异步函数传递给事件循环一样,setState
也传递给事件循环,执行之后的任何代码貌似。
一旦setState方法执行完毕,它将触发render方法,这是React将在文档渲染上工作的时间。
答案 1 :(得分:1)
将setState()视为请求而不是立即更新组件的命令
反应不能保证状态更改立即生效
将其视为setTimeout(function test() {...}, 0);
消息将被添加到队列中,test
函数将在所有堆栈都为空之前不会被触发。您可以在EventLoop documentation