当前位置:首页 > 文章列表 > 文章 > 前端 > 如何使您的 React 应用程序更快:性能提示和最佳实践

如何使您的 React 应用程序更快:性能提示和最佳实践

来源:dev.to 2024-09-18 19:43:03 0浏览 收藏

最近发现不少小伙伴都对文章很感兴趣,所以今天继续给大家介绍文章相关的知识,本文《如何使您的 React 应用程序更快:性能提示和最佳实践》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

啊,反应!我们喜爱的用于构建 ui 的库。它就像一剂神奇的药剂,让我们的网络应用程序感觉具有交互性和快速性——直到有一天,它却没有了。突然,你注意到事情变慢了。点击按钮就像用信鸽寄信一样。您的应用程序从快如闪电变成了慢吞吞,用户开始给您“看”。

不过别担心!就像咖啡可以解决大部分生活问题一样(或者我们是这么认为的),一些关键技术可以增强你的 react 应用程序并使其恢复到最高速度。让我们探索 6 种简单的方法来优化你的 react 应用程序,这样它比你每天喝咖啡因的速度更快。

1.代码分割:仅加载您需要的

曾经走进一个房间,打开所有的灯,然后意识到你只需要一盏灯吗?当你将所有内容捆绑成一大块时,这就是你的 react 应用程序所做的事情。相反,通过代码分割,您只需加载应用程序当前需要的部分。就像逐个房间打开灯一样!

使用 react.lazy() 和 suspense 是实现此目的的完美方法:

import react, { suspense } from 'react';

const lazycomponent = react.lazy(() => import('./lazycomponent'));

const app = () => {
  return (
    <suspense fallback={<div>loading...</div>}>
      <lazycomponent />
    </suspense>
  );
}

为什么有帮助:代码分割通过将未使用的代码的加载推迟到必要时来减少应用程序的初始加载时间。用户无需等待整个应用程序加载即可看到屏幕上的内容。

2.延迟加载图像:不要一次加载所有零食

想象一下,订购一份披萨,却收到了一年的食品杂货。听起来很荒谬,对吧?好吧,这就是当您预先加载所有图像时会发生的情况。相反,延迟加载图像,因此您只获取必要的图像,就像一次订购一份披萨一样。

使用像react-lazyload这样的库是一个快速解决方案:

import lazyload from 'react-lazyload';

<lazyload height={200} offset={100}>
  <img src="large-image.jpg" alt="lazy loaded image" />
</lazyload>

为什么有用:通过延迟加载图像,您可以减少初始页面加载时间,并且仅在需要时下载图像,从而提高性能和用户体验。

3. usecallback 和 usememo:react 的内存提升

就像你不断重复使用同一个咖啡杯以节省清洗时间一样,如果你允许,react 可以重复使用值和函数! usecallbackusememo 是帮助您存储昂贵的计算或函数的钩子,因此它们不会在每次渲染时重新计算。

usememo 示例:

const expensivecalculation = (num) => {
  return num ** 2;
};

const mycomponent = ({ num }) => {
  const squarednumber = react.usememo(() => expensivecalculation(num), [num]);

  return <div>{squarednumber}</div>;
}

usecallback 示例:

const handleclick = usecallback(() => {
  console.log("clicked");
}, []);

为什么有帮助:使用 usememo,react 不必重做昂贵的计算。 usecallback 会阻止您在每次渲染时创建新函数。这可以让 react 平稳运行——就像升级 ram 一样!

4.使用 react.memo 进行记忆:停止不必要的重新渲染

你有没有一个朋友一遍又一遍地重复同一个故事? react 也可以像这样——即使不需要,也会重新渲染组件!这就是 react.memo 的用武之地,它阻止 react 重新渲染组件,除非它们的 props 发生变化。

const mycomponent = react.memo(({ value }) => {
  return <div>{value}</div>;
});

为什么有帮助:react.memo 就像告诉 react,“嘿,你以前听过这个!除非有新的东西,否则不要重复。”它避免了不必要的重新渲染,节省了时间和资源。

5.高效管理状态:仅在需要时才提升状态

提升状态是 react 中的常见模式,但有时我们会因为将状态提升得太高或在错误的位置管理太多状态而感到内疚。这可能会导致过度的重新渲染。尽可能保持组件本地状态,并仅在真正必要时提升状态来避免不必要的重新渲染。

const parentcomponent = () => {
  const [sharedstate, setsharedstate] = usestate(false);

  return (
    <>
      <childcomponent sharedstate={sharedstate} />
      <anotherchild setsharedstate={setsharedstate} />
    </>
  );
}

const childcomponent = ({ sharedstate }) => {
  return <div>{sharedstate ? 'active' : 'inactive'}</div>;
}

const anotherchild = ({ setsharedstate }) => {
  return <button onclick={() => setsharedstate(true)}>activate</button>;
}

为什么有帮助:通过更仔细地管理状态并仅在需要时提升它,您可以避免兄弟组件不必要的重新渲染。这可以让您的应用保持专注和高效。

6.消除用户输入的抖动:冷静下来,做出反应!

想象一下有人疯狂地在搜索栏中输入内容,而您的应用程序试图处理每一次击键。糟糕的react可能是子弹出汗了!输入去抖动——仅在用户暂停后处理输入的过程,而不是在每次按键时处理输入。

使用lodash.debounce可以解决这个问题:

import _ from 'lodash';

const Search = () => {
  const [query, setQuery] = useState('');

  const debouncedSearch = _.debounce((input) => {
    // Do your search logic
    console.log(input);
  }, 500);

  const handleChange = (e) => {
    setQuery(e?.target?.value);
    debouncedSearch(e?.target?.value);
  };

  return <input type="text" value={query} onChange={handleChange} />;
}

为什么有帮助:react 不会在每次击键时都陷入恐慌,反跳动让它可以喘口气。这可以确保在处理实时用户输入(例如搜索或表单字段)时获得更好的性能。

结论:优化 react 应用程序并不是什么火箭科学——它更像是确保你不会一口气喝掉六杯咖啡!从代码分割到延迟加载图像,这些技术将帮助您保持 react 应用程序的快速响应。因此,下次当你的应用程序开始感觉迟缓时,请记住:这不是 react 的错——它只是需要一点优化!

请记住,优化 react 应用程序是一种平衡。您不需要立即投入所有这些技术。相反,确定您的应用程序的瓶颈,应用适当的优化,然后观察您的应用程序变得比您喝完咖啡的速度还要快!



感谢您的阅读,如果您喜欢这篇文章,请分享并留下建议。


如何使您的 React 应用程序更快:性能提示和最佳实践

与我联系

网站:hardik gohil

github:https://github.com/hardikgohilhlr

linkedin:https://www.linkedin.com/in/hardikgohilhlr

谢谢❤️

到这里,我们也就讲完了《如何使您的 React 应用程序更快:性能提示和最佳实践》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

版本声明
本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
Win10网络适配器怎么选择 Win10网络适配器怎么选择
上一篇
Win10网络适配器怎么选择
CSS 的演变:从基础到现代魔法
下一篇
CSS 的演变:从基础到现代魔法
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    511次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    498次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • AI边界平台:智能对话、写作、画图,一站式解决方案
    边界AI平台
    探索AI边界平台,领先的智能AI对话、写作与画图生成工具。高效便捷,满足多样化需求。立即体验!
    418次使用
  • 讯飞AI大学堂免费AI认证证书:大模型工程师认证,提升您的职场竞争力
    免费AI认证证书
    科大讯飞AI大学堂推出免费大模型工程师认证,助力您掌握AI技能,提升职场竞争力。体系化学习,实战项目,权威认证,助您成为企业级大模型应用人才。
    424次使用
  • 茅茅虫AIGC检测:精准识别AI生成内容,保障学术诚信
    茅茅虫AIGC检测
    茅茅虫AIGC检测,湖南茅茅虫科技有限公司倾力打造,运用NLP技术精准识别AI生成文本,提供论文、专著等学术文本的AIGC检测服务。支持多种格式,生成可视化报告,保障您的学术诚信和内容质量。
    561次使用
  • 赛林匹克平台:科技赛事聚合,赋能AI、算力、量子计算创新
    赛林匹克平台(Challympics)
    探索赛林匹克平台Challympics,一个聚焦人工智能、算力算法、量子计算等前沿技术的赛事聚合平台。连接产学研用,助力科技创新与产业升级。
    662次使用
  • SEO  笔格AIPPT:AI智能PPT制作,免费生成,高效演示
    笔格AIPPT
    SEO 笔格AIPPT是135编辑器推出的AI智能PPT制作平台,依托DeepSeek大模型,实现智能大纲生成、一键PPT生成、AI文字优化、图像生成等功能。免费试用,提升PPT制作效率,适用于商务演示、教育培训等多种场景。
    570次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码