React实现窗口自适应、自适应防抖、memo 缓存优化

news/2024/7/15 17:45:35 标签: react.js, 前端, 前端框架

目录

窗口自适应

过渡动画

监听宽高:window.listener.resize

防抖优化:lodash-es/debounce

forwardRef暴露结点给父组件(ref)

Echart实例,可直接调用实例的原生函数

React.memo缓存优化:避免重新渲染


窗口自适应

过渡动画

// 窗口自适应并开启过渡动画
const resize = () => {
    if(cInstance.current) {
        cInstance.current.resize({
            animation: { duration: 300 },
        });
    }
};

监听宽高:window.listener.resize

// 监听窗口大小
useEffect(() => {
//组件渲染后添加
    window.addEventListener('resize', debounceResize);
//组件卸载后移除
    return () => {
        window.removeEventListener('resize', debounceResize);
    };
}, []);

//手动修改
const EChart = (props) => {
    const { style } = props;
    // 监听高度变化
    useLayoutEffect(() => {
        resize();
    }, [style.width, style.height]);
}

防抖优化:lodash-es/debounce

使用 debounceResize 替换 resize

import debounce from 'lodash-es/debounce';

// 自适应防抖优化
const debounceResize = debounce(resize, 500);

*forwardRef暴露结点给父组件(ref)

Echart实例,可直接调用实例的原生函数

对父组件暴露获取 ECharts 实例的方法,让父组件可直接通过实例调用原生函数。

const EChart = (props, ref) => {
    // 略......
    // 获取实例
    const getInstance = () => cInstance.current;
    // 暴露方法
    useImperativeHandle(ref, () => ({ getInstance }));
}
export default React.forwardRef(EChart);

React.memo缓存优化:避免重新渲染

作为一个全局通用组件,在 props 不变的情况下,跳过重新渲染

export default React.memo(React.forwardRef(EChart));

参考链接:React hooks 封装 ECharts5 通用组件 - 掘金


http://www.niftyadmin.cn/n/5057628.html

相关文章

vue3 和vue2 的比较

文章目录 生命周期多根节点Composition API组合式APIOptions API与composition API对比优化逻辑组织优化逻辑复用 异步组件(Suspense)Suspense组件 响应式原理性能体积优化编译优化diff算法优化静态提升数据劫持(响应式系统)优化 生命周期 vue3在组合AP…

基于spring boot的医疗管理系统 /基于java的医疗系统

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…

一种基于C++的结构体赋值内存的方法探究

本文探讨一种基于C的结构体赋值内存的方法,通过该方法,在进行内存赋值的同时,对代码阅读较友好,可适用于一些实际工作环境,且能提高开发效率,降低维护成本。 问题提出 某工程某次迭代,需要添加…

四川玖璨电子商务有限公司抖音培训引领电商新潮

近年来,随着电子商务的迅猛发展,抖音这个社交媒体平台也逐渐成为了商家必争之地。四川玖璨电子商务有限公司抖音培训,为你解锁电商流量密码,助你一飞冲天! 一、抖音电商:下一个电商蓝海 作为拥有海量用户的…

IDEA Debug技巧大全,看完就能提升工作效率

作者简介 目录 1.行断点 2.方法断点 3.异常断点 4.字段断点 5.条件表达式 1.行断点 行断点就是平时我们在代码行旁边单击鼠标打上的断点,这个没有什么好说的。关键点在于很多人不知道的,行断点其实是可以右击选择是对改行的全部调用都生效&#xf…

【x265 源码分析系列】:概述

介绍 x265 也属于 VLC 的 project。 版本: x265-3.5(TAG-208) git: https://bitbucket.org/multicoreware/x265_git.git 编码特点: 研究了一段时间的 HEVC 编码标准,最近开始研究符合 HEVC 标准的开源…

BASH shell脚本篇4——函数

这篇文章介绍下BASH shell中的函数。之前有介绍过shell的其它命令,请参考: BASH shell脚本篇1——基本命令 BASH shell脚本篇2——条件命令 BASH shell脚本篇3——字符串处理 函数是代码重用的最重要方式。Bash函数可以定义为一组命令,在b…

【rabbitmq】搭建rabbitmq启用插件报错

配置 FROM rabbitmq:latestMAINTAINER LUCKY# 添加插件到指定目录 可按照此方式自行扩展其他插件 # https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases ADD ./rabbitmq_delayed_message_exchange-3.12.0.ez /plugins# 开启管理界面插件 RUN rabbitmq-p…