当prevState / prevProps与this.state / this.props相同时,为什么componentDidUpdate会触发

时间:2016-04-20 10:51:44

标签: reactjs

我有一个组件,其componentDidUpdate似乎没有任何理由触发。它是一个儿童组成部分,没有任何国家。即使prevPropsthis.props与其触发完全相同,这有什么理由吗?我认为更新只应在props / state

发生变化时触发

2 个答案:

答案 0 :(得分:4)

每次父组件重新渲染(并传入新的道具)时,都会触发

componentDidUpdate()。在有状态的组件中,只要setState()被触发。

即使旧的prevprops和&#39; this.props are exactly the same, componentDidUpdate()`在父组件重新渲染时仍会被触发。 < /强>

如果你想阻止反应进入渲染周期,你应该实施shouldComponentUpdate()方法,在那里你可以比较新旧道具。

答案 1 :(得分:2)

  

更新只应在道具/州

发生变化时触发

不,React每次都会向VirtualDOM呈现一切。但是它只更新真实DOM中的已更改属性。

为避免您在shouldComponentUpdate中使用PureRenderMixin或自定义比较代码。