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

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

来源:dev.to 2024-09-18 19:43:03 0浏览 收藏
推广推荐
免费电影APP ➜
支持 PC / 移动端,安全直达

最近发现不少小伙伴都对文章很感兴趣,所以今天继续给大家介绍文章相关的知识,本文《如何使您的 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 &lt;input type=&quot;text&quot; value={query} onChange={handleChange} /&gt;;
}

为什么有帮助: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基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • ChatExcel酷表:告别Excel难题,北大团队AI助手助您轻松处理数据
    ChatExcel酷表
    ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
    3207次使用
  • Any绘本:开源免费AI绘本创作工具深度解析
    Any绘本
    探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
    3421次使用
  • 可赞AI:AI驱动办公可视化智能工具,一键高效生成文档图表脑图
    可赞AI
    可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
    3450次使用
  • 星月写作:AI网文创作神器,助力爆款小说速成
    星月写作
    星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
    4558次使用
  • MagicLight.ai:叙事驱动AI动画视频创作平台 | 高效生成专业级故事动画
    MagicLight
    MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
    3828次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码