当前位置: 首页 > news >正文

react 中 component 和 pureComponent 区别是什么?

在 React 中,Component 和 PureComponent 的核心区别就在于 是否自动进行浅层比较 (shallow compare),从而决定组件是否需要重新渲染。

1. React.Component

Component 不会自动比较 props 或 state,只要父组件重新渲染(哪怕 props 没变),它也会执行 render()。

换句话说:

默认每次都重新渲染
除非你自己写 shouldComponentUpdate 去控制

class MyComponent extends React.Component {render() {console.log('Component render');return <div>{this.props.value}</div>;}
}

2. React.PureComponent

PureComponent 内部带了一个自动的:shouldComponentUpdate( nextProps, nextState )
并执行 浅层比较 (shallow equal):

  • props 没变(浅比较)

  • state 没变(浅比较)

就不会重新渲染
从而减少不必要的 render

示例:
class MyPureComponent extends React.PureComponent {render() {console.log('PureComponent render');return <div>{this.props.value}</div>;}
}

如果 props/state 没变,render() 不会执行。

浅比较(shallow compare)是什么意思?

对比的是引用是否相同,不是内容是否相同。

例如:

{ a: 1 } === { a: 1 }  // false(引用不同)

所以:

  • 如果 props 是基本类型(number、string、boolean):效果很好

  • 如果 props 是对象、数组,且你用 mutable 修改方式,引用不变 → PureComponent 会认为没变 → 不会更新(BUG)

Component 与 PureComponent 的对比总结

特性 Component PureComponent
是否自动比较 props/state ❌ 否 ✅ 是(浅比较)
是否减少无效渲染 ❌ 否 ✅ 是
是否容易踩坑 👍 稳定 ⚠️ 如果 props 是对象/数组容易误判
常见用途 默认所有组件 性能优化、UI 展示型组件

什么时候用 PureComponent?

  • props/state 基本类型

  • props/state 是不可变数据(使用 immutable 或通过扩展符结构拷贝)

例如:

this.setState({ list: [...this.state.list, newItem] })

什么时候不要用 PureComponent?

当 props 或 state 经常是:

  • 嵌套对象

  • 嵌套数组

  • 引用不变但内容变了

例如:

this.state.obj.a = 1;  // 引用没变
this.setState({ obj: this.state.obj }); // PureComponent 判断不出变化

会导致界面不更新。

总结

Component:默认每次都更新
PureComponent:自动浅比较,不变就不更新(性能优化)

想要性能更好、避免重复渲染 → 用 PureComponent
但要注意:一定要保持 props/state 的不可变性

http://www.jsqmd.com/news/44249/

相关文章:

  • 2025年电子站牌品牌前十排名:江苏兰太智能装备有限公司领跑行业
  • 2025年电子站牌厂家综合实力排行榜:江苏兰太智能装备领跑行业
  • 2025年电子站牌品牌综合实力排行榜:江苏兰太智能装备领跑行业
  • 2025 年最新水基石墨源头厂家优质企业推荐排行榜:覆盖多品类石墨产品,助力企业精准选型可膨胀/阻燃/导电石墨/石墨导热板/石墨纸/润滑石墨粉/铸造石墨粉公司推荐
  • 2025 最新推荐石墨粉厂家排行榜:超细 / 导电 / 高纯 / 电池 / 金刚石专用等高性能优质品牌权威甄选超细/蠕虫/电池石墨粉公司推荐
  • 2025年热门的电动反弹器厂家最新TOP排行榜
  • 《梦幻西游2》最新法宝合成攻略
  • 剑指offer-39、平衡⼆叉树
  • 2025年口碑好的在线硬度计热门厂家推荐榜单
  • 2025 最新压花辊源头厂家权威推荐榜:国际测评认证 + 全品类适配,优选高性价比实力制造商皮革压花辊/塑胶压花辊/塑木地板压花辊/PVC 压花辊/布料压花辊/木材压花辊厂家推荐
  • 计划成立一个反隐私组织
  • 第5章 生成式AI项目的管理新挑战
  • 2025年热门的硬度计硬度块厂家推荐及采购参考
  • 2025 最新推荐!权威测评认证光选机厂家榜:AI 多模态 + 高光谱技术,覆盖全场景分选需求废塑料/薄膜/高光谱材质/日杂分选/整瓶分选/餐盒分选光选机厂家推荐
  • 实用指南:Android Studio新手开发第二十二天
  • 2025年评价高的金相预磨机厂家推荐及选择指南
  • 2025 软著申请公司最新推荐榜:国际协会权威测评认证,全流程高效代办 + 政策精准把控优质机构合集计算机软著申请/企业软著申请/个人软著申请/软著申请代办公司推荐
  • 2025年比较好的金相分析厂家最新TOP实力排行
  • UE4+C++构建-(五十三)UE4工程中引入第三方C++的.DLL第12篇-模块规则材料(.Build.cs)-第6篇-将第三方预编译库文件(.lib)添加到当前模块的公共链接库列表中
  • 2025 最新推荐智能分选设备厂家排行榜:覆盖 260 + 材质识别 国际测评认证 再生资源 / 固废处理优选绿色分拣中心/可回收物/生活垃圾塑料薄膜智能分选设备公司推荐
  • linux c文件复制
  • 实现一种超轻量级的有线表格识别方法(有代码,可部署)
  • 2025年质量好的贵金属电刷厂家选购指南与推荐
  • 深入解析:IT运维干货:lnav开源日志分析工具详解与CentOS实战部署
  • 渗透测试
  • 2025年口碑好的油门踏板电刷优质厂家推荐榜单
  • AppInventor
  • CF2097B Baggage Claim
  • 2025 最新推荐!移动厕所源头厂家权威榜单:千台储备 + 全国网点,国际测评认证优选指南室外/临时/活动/简易/户外临时/工地临时/户外移动厕所出租公司推荐
  • 2025 最新推荐飞达剥标机优质厂家口碑榜:进口零件 + 全链条服务,前推式飞达剥标机/后撤式飞达剥标机/片料式飞达剥标机/飞达剥标机供料器公司推荐