ReactContext的性能缺点和解决方案
学习目标
- 理解并掌握 ReactContext的性能缺点和解决方案 的核心原理与工程实践
总结
context 在跨层传递数据方面很好用,在组件库里用的很多,但是它也有一些性能方面的缺点。
context 中如果是一个对象,不管任意属性变了,都会导致依赖其它属性的组件跟着重新渲染。
解决这个问题有几种方案:
- 拆分 context,每种数据放在一个 context 里
- 用 zustand 等状态管理库,因为它们不是用 context 实现的,自然没有这种问题
- 用 memo 包裹子组件,它会对比新旧 props,没变就不会重新渲染
context 虽然好用,但是用的时候也要注意下这个性能方面的缺点。