我有一个组件,它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。