react性能检测与优化

网页运行最重要的是速度快嘛,那我们怎么知道网页运行的时候,哪些部分快哪些部分慢呢?
我们可以安装react性能检测工具进行检测,通过安装1037363-20180920221823862-637197808.png
然后修改app/index.jsx文件
1037363-20180920222204463-1272234594.png
,在要检测的组件运行之前输入1037363-20180920215136022-1065628595.png
然后再运行1037363-20180920215255587-1838448599.png
最后再运行1037363-20180920215348878-1446882216.png
即可以打印出浪费性能的组件列表,最后我们我对浪费性能的组件列表进行优化即可。
那我们如何进行优化呢?
我们可以通过安装1037363-20180920222025356-1505011006.png
然后在组件中引用并使用。
比如
1037363-20180920225710861-906373261.png

React 有一个生命周期 hook 叫做shouldComponentUpdate,组件每次更新之前,都要过一遍这个函数,如果这个函数返回true则更新,
如果返回false则不更新。而默认情况下,这个函数会一直返回true,就是说,如果有一些无效的改动触发了这个函数,也会导致无效的更新。
那么什么是无效的改动?之前说过,组件中的props和state一旦变化会导致组件重新更新并渲染,但是如果props和state没有变化也莫名其妙的触发更新
了呢(这种情况确实存在)———— 这不就导致了无效渲染吗?这里使用this.shouldComponentUpdate = PureRenderMixin.shouldComponentUpdate.bind(this);的
意思是重写组件的shouldComponentUpdate函数,在每次更新之前判断props和state,如果有变化则返回true,无变化则返回false。
因此,我们在开发过程中,在每个 React 组件中都尽量使用PureRenderMixin。
我们所做的TodoDemo,里面主要是控制input组件,以及下面的列表组件。
1037363-20180920230553716-830995524.png

在input组件中
1037363-20180920230351512-1578375276.png
在List组件中
1037363-20180920230745907-1733436458.png
在我们的Todo组件中,它定义了数据展示出来的规则,它是一个智能组件
1037363-20180920231222764-355350329.png

本博客升华自:大众点评app视频。
完整的demo见github:https://github.com/JserJser/reactWebApp/tree/master/perf-optimization

转载于:https://www.cnblogs.com/smart-girl/p/9683988.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值