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