如何使您的 React 应用程序更快:性能提示和最佳实践
最近发现不少小伙伴都对文章很感兴趣,所以今天继续给大家介绍文章相关的知识,本文《如何使您的 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 可以重复使用值和函数! usecallback 和 usememo 是帮助您存储昂贵的计算或函数的钩子,因此它们不会在每次渲染时重新计算。
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 应用程序是一种平衡。您不需要立即投入所有这些技术。相反,确定您的应用程序的瓶颈,应用适当的优化,然后观察您的应用程序变得比您喝完咖啡的速度还要快!
感谢您的阅读,如果您喜欢这篇文章,请分享并留下建议。

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

- 上一篇
- Win10网络适配器怎么选择

- 下一篇
- CSS 的演变:从基础到现代魔法
-
- 文章 · 前端 | 3分钟前 |
- HTMLdetails标签作用及使用方法
- 215浏览 收藏
-
- 文章 · 前端 | 8分钟前 |
- 多设备适配图片如何选择
- 500浏览 收藏
-
- 文章 · 前端 | 24分钟前 |
- FontAwesome图标切换失败解决方法
- 153浏览 收藏
-
- 文章 · 前端 | 55分钟前 |
- JS敏感词过滤方法全解析
- 153浏览 收藏
-
- 文章 · 前端 | 58分钟前 |
- JS缓存接口数据的几种方法
- 434浏览 收藏
-
- 文章 · 前端 | 1小时前 |
- HTML滑动侧边栏实现方法详解
- 143浏览 收藏
-
- 文章 · 前端 | 1小时前 |
- Jest测试中AWS凭证管理技巧
- 128浏览 收藏
-
- 文章 · 前端 | 1小时前 |
- HTML滑块控件使用教程及样式优化
- 428浏览 收藏
-
- 文章 · 前端 | 1小时前 |
- async/await如何影响事件循环?
- 200浏览 收藏
-
- 文章 · 前端 | 1小时前 |
- 网页元素变形解决方法及响应式教程
- 363浏览 收藏
-
- 文章 · 前端 | 1小时前 |
- JS本地存储与会话存储操作详解
- 239浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 514次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 499次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- AI Mermaid流程图
- SEO AI Mermaid 流程图工具:基于 Mermaid 语法,AI 辅助,自然语言生成流程图,提升可视化创作效率,适用于开发者、产品经理、教育工作者。
- 29次使用
-
- iTerms
- iTerms是一款专业的一站式法律AI工作台,提供AI合同审查、AI合同起草及AI法律问答服务。通过智能问答、深度思考与联网检索,助您高效检索法律法规与司法判例,告别传统模板,实现合同一键起草与在线编辑,大幅提升法律事务处理效率。
- 36次使用
-
- 迅捷AIPPT
- 迅捷AIPPT是一款高效AI智能PPT生成软件,一键智能生成精美演示文稿。内置海量专业模板、多样风格,支持自定义大纲,助您轻松制作高质量PPT,大幅节省时间。
- 23次使用
-
- 迅捷AI写作
- 迅捷AI写作,您的智能AI写作助手!快速生成各类文稿,涵盖新媒体、工作汇报。更兼具文字识别、语音转换、格式转换等实用功能,一站式解决文本处理难题,显著提升工作效率。
- 7次使用
-
- 小图钉Excel
- 小图钉Excel:AI大模型驱动的智能助手,通过自然语言对话,自动解决Excel复杂操作,如写函数、整理格式。支持本地文件修改,数据严格保密,助您告别Excel烦恼,高效提升工作效率。
- 4次使用
-
- 优化用户界面体验的秘密武器:CSS开发项目经验大揭秘
- 2023-11-03 501浏览
-
- 使用微信小程序实现图片轮播特效
- 2023-11-21 501浏览
-
- 解析sessionStorage的存储能力与限制
- 2024-01-11 501浏览
-
- 探索冒泡活动对于团队合作的推动力
- 2024-01-13 501浏览
-
- UI设计中为何选择绝对定位的智慧之道
- 2024-02-03 501浏览