最近,我意识到,当父母更改均匀的道具和状态时,孩子组件总是重新呈现。这使我的项目变得如此慢。因此,我使用shouldComponentupdate
修复了这一点。但是,我真的应该使用它吗?
如果我应该使用它。有什么方法可以将其应用于React-hook
?
这是我的shouldComponentupdate
shouldComponentupdate(nextProps, nextState){
if(JSON.stringify(nextProps) !== JSON.stringify(this.props) ||
JSON.stringify(nextState) !== JSON.stringify(this.state)
){
return true
}
return false
}
非常感谢!
基于您只是将当前的道具/状态与先前的道具/状态进行比较,您应该能够删除shouldComponentUpdate
并使用Purecomponent。唯一的区别是Purecomponent进行浅道具/状态检查,而您正在使用JSON.STRINGIFY进行深度价值相等检查,因此您应确保浅层检查仍在进行优化。
class MyComponent extends PureComponent { // No need for shouldComponentUpdate
功能组件的等效功能(包括使用钩子的组件(是React.memo。
function MyComponent(props) {
...
}
export default React.memo(MyComponent);
父母组件的重新渲染将始终触发其所有子女组件的重新渲染。因此,在儿童组件中实现shouldComponentUpdate
不会有帮助。
您可以使用的一种解决方案是将当前的Prop/parent Component委托给较低的支柱/状态,即听取道具并在儿童组件上渲染UI,并让父母组件跟踪更少的项目。