react 之 shouldComponentUpdate / PureComponent / memo 减少组件的渲染次数

本文介绍了React中优化组件渲染的三种方法:shouldComponentUpdate钩子函数,PureComponent类以及memo方法。shouldComponentUpdate允许自定义判断是否需要渲染;PureComponent自动进行浅比较以减少不必要的渲染;memo则是针对函数组件的优化,同样进行浅比较。通过这些方法,可以避免不必要的组件更新,提升应用性能。
摘要由CSDN通过智能技术生成

目录

shouldComponentUpdate 钩子函数

PureComponent 类

memo 方法

总结


shouldComponentUpdate 钩子函数

在react中,父组件重新渲染会造成其所有子组件都重新渲染。当需要设置其某个子组件不重新渲染时,需要使用shouldComponentUpdate钩子函数——在子组件的该生命周期中做判断,是否需要重新渲染。

PureComponent 类

React15.3中新加了一个PureComponent类,用来减少不必要的render渲染次数。适用于class创建的组件,使用时只要把继承类从Component换成PureComponent。

例如:

import React, { PureComponent } from 'react'
export default class List extends PureComponent {
    render() {
        console.log('list render')
        return(
            <div>{this.props.list.title}</div>
        )
    }
}

memo 方法

React 16.6.0中新加了一个memo方法,用来减少不必要的render渲染次数。适用于函数式组件。使用语法:

function Child({seconds}){
    return (<div></div>)
};
export default React.memo(Child)

React.memo()可接受2个参数,第一个参数为纯函数的组件,第二个参数用于对比props控制是否刷新。

总结

可以把memo和PureComponent看作是shouldComponentUpdate的语法糖。

他们的底层原理一致:在被使用时,都会自动加载shouldComponentUpdate函数,当组件更新时,shouldComponentUpdate对props和state进行了一层浅比较,如果组件的props和state都没有发生改变,render方法就不会触发,省去Virtual DOM的生成和对比过程,达到提升性能的目的。

区别在于:memo用于函数式组件,PureComponent用于类组件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值