我有一个组件,它componentDidUpdate
似乎无缘无故地触发。它是一个子组件,没有状态。即使prevProps
和this.props
的触发完全相同,有什么原因吗?我认为更新应该只在props
/发生变化时触发state
?
为什么在 prevState/prevProps 与 this.state/this.props 相同时触发 componentDidUpdate
IT技术
reactjs
2021-05-07 05:19:01
2个回答
componentDidUpdate()
每次父组件重新渲染(并传入新的props)时都会触发。并且在有状态组件中也可以在任何时候setState()
被触发。
即使旧的prevprops
和this.props
完全一样,componentDidUpdate()
如果父组件重新渲染,仍然会被触发。
如果你想阻止 react 进入渲染周期,你应该实现该shouldComponentUpdate()
方法,在那里你可以比较新旧 props。
更新应该只在props/状态发生变化时触发
不,React 每次都将所有内容渲染到 VirtualDOM。但随后它只更新真实 DOM 中已更改的属性。
要避免这种情况,您可以使用PureRenderMixin或您的自定义代码比较- shouldComponentUpdate
。