react性能优化之scu,purecomponent, memo

迭代根系
• 阅读 3400

影响react性能的很重要的一个因素还有scu,也就是shouldcomponentupdate生命周期,在这里可以判断这个组件是否应该更新,最好都使用purecomponent,因为purecomponent会默认做一次浅比较。

react性能优化之scu,purecomponent, memo
代码如下
list.jsx


import React from 'react';
import { List, Avatar, Button, Input } from 'antd';
import Bottom from './bottom.jsx';

export default (props) => {
    const { data, deleteItem } = props;
    return (
        <div>
            <List
                itemLayout="horizontal"
                dataSource={data}
                renderItem={item => (
                <List.Item>
                    <List.Item.Meta
                    avatar={<Avatar src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" />}
                    title={<div>
                        {item.title}
                            <Input />
                            <Button 
                                type="primary" 
                                danger 
                                style={{marginLeft: '5px'}}
                                onClick={() => deleteItem(item)}
                                >
                                删除
                            </Button>
                        </div>}
                    description="Ant Design, a design language for background applications, is refined by Ant UED Team"
                    />
                </List.Item>
                )}
            />
            <Bottom />
        </div>
    )
}

bottom.jsx

import React from 'react';

class Common extends React.PureComponent {
    state = {
    };
    componentDidMount() {
        console.log('bottom组件又进入到didmount了')
    }
    render() {
        console.log('我是bottom组件,我有渲染了')
        return (
            <>
                <h2>
                    我是tab的底部
                </h2>
            </>
        )
    }
}

export default Common;

在不使用purecomponent优化之前,点击删除,bottom会重新渲染
组件结构是 list是父组件,子组件是bottom
react性能优化之scu,purecomponent, memo
在使用了purecomponent之后,点击删除,bottom不会重新渲染
react性能优化之scu,purecomponent, memo

如果有更多的数据,更深的数据结构,可以采用深比较
但是深比较会非常耗费性能
这时候可以考虑ImmutableJS来优化,
ImmutableJS每次操作都会产生一个新的对象出来,由于它会复用之前数据的数据结构,所以产生新的数据也很快。
对于hook组件来说,使用React.memo来代替purecomponent进行优化渲染

点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
海军 海军
4年前
React Hook丨用好这9个钩子,所向披靡
ReactHook指南什么是Hook?Hook是React16.8的新增特性。它可以让你在不编写class的情况下使用state以及其他的React特性。Hook本质上就是一个函数,它简洁了组件,有自己的状态管理,生命周期管理,状态共享。useStateuseEffectuseContextus
好买-葡萄 好买-葡萄
4年前
影响MySQL性能的硬件因素
好买网www.goodmai.comIT技术交易平台第一部分 磁盘I/O与内存影响MySQLInnoDB引擎性能的最主要因素就是磁盘I/O,目前磁盘都是机械方式运作的,主要体现在读写前寻找此道的过程中。磁盘自带的读写缓存大小,对于磁盘的读写速度至关重要。读写速度快的磁盘,通常都带有较大的读写缓存。磁盘的寻道过程是机械方式。决定了其随机读
爱丽丝13 爱丽丝13
4年前
快速了解 React Hooks 原理
为了保证的可读性,本文采用意译而非直译。我们大部分React类组件可以保存状态,而函数组件不能?并且类组件具有生命周期,而函数组件却不能?React早期版本,类组件可以通过继承PureComponent来优化一些不必要的渲染,相对于函数组件,React官网没有提供对应的方法来缓存函数组件以减少一些不必要的渲染,直接16.6出来的Rea
Stella981 Stella981
4年前
React之浅拷贝与深拷贝
 最近发现的一个bug让我从react框架角度重新复习了一遍浅拷贝与深拷贝。浅拷贝,就是两个变量都是指向一个地址,改变了一个变量,那另一个变量也随之改变。这就是浅拷贝带来的副作用,两个变量会相互影响到,因为它们指向同一个地址。深拷贝,就是互相独立,指向的是不同的地址,一个变量改变了,另一个变量不会被影响到。react角度:父组件传给
Stella981 Stella981
4年前
React动画:react
1.安装yarnaddreacttransitiongroup2.使用CSSTransition组件importReact,{PureComponent}from'react';import{
Stella981 Stella981
4年前
React.render和reactDom.render的区别
这个是react最新版api,也就是0.14版本做出的改变。主要是为了使React能在更多的不同环境下更快、更容易构建。于是把react分成了react和reactdom两个部分。这样就为web版的react和移动端的ReactNative共享组件铺平了道路。也就是说我们可以跨平台使用相同的react组件。 新的react包包含了React.crea
Stella981 Stella981
4年前
React_PureComponent 简化 react shouldComponentUpdate 方法,优化性能
PureComponent 与 Component 类似,自react 15.3版本之后使用,主要为了提高组件的重复加载问题,提高性能,类似于shouldComponentUpdate功能。importReact,{Component,PureCompoent} from'react'classAextendsPure
Wesley13 Wesley13
4年前
Java位运算原理及使用讲解
前言日常开发中位运算不是很常用,但是巧妙的使用位运算可以大量减少运行开销,优化算法。举个例子,翻转操作比较常见,比如初始值为1,操作一次变为0,再操作一次变为1。可能的做法是使用三木运算符,判断原始值为1还是0,如果是1,设置为0,否则设置为0.但是使用位运算,不用判断原始值,直接改变值就可以:1^num//num为原始值当然,一条语句可能
React memo的原理、实践与思考
前言在react中,对一个组件进行点击事件等操作时,该组件以及该组件的子组件都会重新渲染。避免组件的重新渲染一般可以借助React.memo、useCallback等来实现。什么是memomemo原理memo类似于class中pureComponent的特
迭代根系
迭代根系
Lv1
鞭个马儿归去也,心急马行迟。
文章
4
粉丝
0
获赞
0