关于shouldComponentUpdate()的怪异问题

时间:2019-04-06 16:05:48

标签: javascript reactjs react-lifecycle-hooks

我不明白shouldComponentUpdate()方法如何访问旧状态,据我所知,props或状态更改后,shouldComponentUpdate()会被触发。

假设您调用setState(),之后将更改当前状态并使用新状态进行更新。但是,即使将状态更新为最新版本,也应该触发shouldComponentUpdate()。因此,shouldComponentUpdate()中的“ this.state”如何返回旧状态?

select * from q_factory;

有人知道吗?非常感谢。

2 个答案:

答案 0 :(得分:2)

在更新组件上的任何内容(包括状态,如react docs强调的状态)之前,将调用此生命周期函数。

  当接收到新的道具或状态时,

shouldComponentUpdate()在渲染之前被调用。

因此,在调用shouldComponentUpdate的时刻,新状态尚未应用,this.state仍指向旧状态。

答案 1 :(得分:2)

最简单的方法是-在层次结构中某个元素上方发生更改时触发渲染。如果组件本身将在从上面启动的渲染周期内进行渲染,则取决于shouldComponentUpdate的返回值。

如果此方法返回true,则渲染将更改组件的当前状态,直到shouldComponentUpdate返回true为止。

因此,shouldComponentUpdate方法中的this.state具有较旧的状态,而参数中的nextState具有最新的状态。