加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

React 性能优化技巧总结

发布时间:2019-02-28 03:46:05 所属栏目:建站 来源:落在起风的地方
导读:副标题#e# 本文将从 render 函数的角度总结 React App 的优化技巧。需要提醒的是,文中将涉及 React 16.8.2 版本的内容(也即 Hooks),因此请至少了解 useState 以保证食用效果。 正文开始。 当我们讨论 React App 的性能问题时,组件的渲染速度是一个重要

这里因为为了决定 Foo 是否要被渲染出来,我们需要将 isFooVisible 放在 App中维护,因此也就不能将状态拆出放到更低的层级。不过,在 isFooVisible 发生变化时重新渲染 Bar 仍然是不必要的,因为 Bar 并不依赖 isFooVisible。我们只希望 Bar 在传入属性 name 变化时重新渲染。

那我们该怎么搞呢?两种方法。

其一,对 Bar 做记忆化(memoize):

  1. const Bar = React.memo(function Bar({name}) {  
  2.   return <h1>{name}</h1>;  
  3. });  

这就能保证 Bar 只在 name 发生变化时才重新渲染。

此外,另一个方法就是让 Bar 继承 React.PureComponent 而非 React.Component:

  1. class Bar extends React.PureComponent {  
  2.  render() {  
  3.    return <h1>{name}</h1>;  
  4.  }  
  5. }  

是不是很熟悉?我们经常提到使用 React.PureComponent 能带来一定的性能提升,避免不必要的 render。

总结:避免组件不必要的渲染的方法有:React.memo 包裹的函数式组件,继承自 React.PureComponent 的 class 组件。

为什么不让每个组件都继承 PureComponent 或者用 memo 包呢?

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读