shouldComponentUpdate 是做什么的?
shouldComponentUpdate 是什么?
-
它是 React 类组件(Class Component)的生命周期函数。
-
调用时机:当 props 或 state 改变时,在重新渲染之前触发。
-
返回值:必须返回一个布尔值:
true → 允许组件重新渲染(默认行为)
false → 阻止组件重新渲染
用途
性能优化
-
可以避免不必要的渲染,提高性能。
-
特别是在组件树比较大、状态更新频繁时很有用。
手动控制渲染逻辑
- 比如只在某些特定 props 变化时才重新渲染。
示例
class MyComponent extends React.Component {
shouldComponentUpdate(nextProps, nextState) {
// 只有当 count 变化时才更新
if (nextProps.count !== this.props.count) {
return true; // 允许重新渲染
}
return false; // 否则跳过渲染
}
render() {
console.log("组件渲染了");
return <div>{this.props.count}</div>;
}
}
使用:
<MyComponent count={1} />
如果外层多次 setState 但 count 值没变,组件就不会重新渲染。
现代 React 的替代方案
在函数组件里没有 shouldComponentUpdate,但可以用:
React.memo
const MyComponent = React.memo((props) => {
console.log("渲染了");
return <div>{props.count}</div>;
});
只有当 props 变化时才会重新渲染。
useMemo / useCallback
用于缓存计算结果或函数,减少子组件不必要的更新。
总结:
shouldComponentUpdate 用于 控制组件是否需要重新渲染,主要用来做性能优化。在函数组件里,推荐用 React.memo 来替代。
浙公网安备 33010602011771号