Javascript 在setState更新状态之前调用Render

Javascript 在setState更新状态之前调用Render,javascript,reactjs,setstate,asynchronous-javascript,Javascript,Reactjs,Setstate,Asynchronous Javascript,有没有办法确保在setState实际更新状态后调用render?据我所知,setState是异步的。我尝试将render作为setState的回调,但它仍然在状态更新之前呈现 HTML代码: <div id="root"></div> 我尝试回调到setStaterender,但第二次渲染将在第一次渲染之后,但在setState更新的状态之前进行渲染: this.setState({ squares: a }, this.render); 它记录了: square

有没有办法确保在
setState
实际更新状态后调用
render
?据我所知,
setState
是异步的。我尝试将
render
作为
setState
的回调,但它仍然在状态更新之前呈现

HTML代码:

<div id="root"></div>
我尝试回调到
setState
render
,但第二次渲染将在第一次渲染之后,但在
setState
更新的
状态之前进行渲染:

this.setState({
  squares: a
}, this.render);
它记录了:

squares before: [undefined, 2, undefined, undefined, undefined, 2]
new squares: [undefined, undefined, 2, undefined, 2, undefined]
non-updated squares: [undefined, 2, undefined, undefined, undefined, 2]
rendering
rendering

任何帮助都将不胜感激。提前谢谢

componentWillMount
中的
synchronous
setState
不会触发重新渲染,而是反映初始渲染本身的更改。但是,对setState的回调在render方法之后调用

如果在渲染方法中记录
状态方块
,它将在初始渲染本身中记录正确的结果

p.S.
componentWillMount
在最新版本中被弃用,最好在构造函数中使用当前逻辑,而不是
componentWillMount


使用shouldComponentUpdate(object nextrops,object nextState),对于渲染,每次返回true时,渲染都会发生

但是如何修复代码,使其在调用setState后进行渲染?@vapporwashmake,只有在调用setState并更新状态后,您当前的代码才会调用render,仅触发对setState的回调afterwards@ShubhamKhatri我有一个类似的问题。是否有一个先决条件,即只有在状态真正更改后才会调用
render
方法。
this.setState({
  squares: a
}, this.render);
squares before: [undefined, 2, undefined, undefined, undefined, 2]
new squares: [undefined, undefined, 2, undefined, 2, undefined]
non-updated squares: [undefined, 2, undefined, undefined, undefined, 2]
rendering
rendering