React之SCU(性能优化篇)

一、概念

shouldComponentUpdate简称SCU,是React中性能优化的重要一环。

shouldComponentUpdate(nextProps, nextState) {
    // 判断是否需要被渲染,如果需要则返回true,否则返回false 
    if (nextProps.b === this.props.b) {
        return false;
    } else {
        return true;
    }
}

二、适用场景

react同一父组件的所有子组件中有一个更新,剩下的所有子组件都会重新渲染,但是为了性能,我们不需要让未更新依赖的组件更新。SCU就是解决这个未更新依赖的组件的重新渲染问题。

代码演示:

运行结果:

可以看到虽然只有组件一有数据更新,但所有组件都被重新渲染加载了。这时候就需要用到SCU了。

三、使用方法

3.1  基本使用方法 之一

为了方便演示我先将三四号子组件注释掉了。

注意这个方法是浅比较的scu

代码演示:

运行结果:

可以看到,只有更新的组件进行了重新加载。未更新的组件并没有受到影响。

3.2  PureComponent方法

类组件 extends pureComponent的时候  当前组件也是浅比较的scu

代码展示:

运行结果:

可以看到,第三组件只有在首屏时加载一次,而后再没有加载,说明方法成功 

3.3   React.memo高阶组件

React.memo 这个高阶函数 可以叫高阶组件

React.memo 这个高阶组件做scu 也是浅比较的scu

 代码展示:

运行结果:

 3.4  lodash.isEqual方法

多层的对象要进行比较,使用lodash 提供的递归深度比较

(1)安装第三方依赖包   cnpm i -S lodash

(2)使用 lodash.isEqual

 代码展示:

 运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大聪明码农徐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值