我有一个组件,其componentDidUpdate
似乎没有任何理由触发。它是一个儿童组成部分,没有任何国家。即使prevProps
和this.props
与其触发完全相同,这有什么理由吗?我认为更新只应在props
/ state
?
答案 0 :(得分:4)
componentDidUpdate()
。在有状态的组件中,只要setState()
被触发。
即使旧的prevprops
和' this.props are exactly the same,
componentDidUpdate()`在父组件重新渲染时仍会被触发。 < /强>
如果你想阻止反应进入渲染周期,你应该实施shouldComponentUpdate()
方法,在那里你可以比较新旧道具。
答案 1 :(得分:2)
更新只应在道具/州
发生变化时触发
不,React每次都会向VirtualDOM呈现一切。但是它只更新真实DOM中的已更改属性。
为避免您在shouldComponentUpdate
中使用PureRenderMixin或自定义比较代码。