提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|行业资讯|编辑:龚雪|2021-05-13 11:15:05.880|阅读 137 次
概述:优化性能是在交付React应用程序之前要考虑的一项重要技术,本文将为大家介绍5种方法来提升性能!
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
Kendo UI致力于新的开发,来满足不断变化的需求,通过React框架的Kendo UI JavaScript封装来支持React Javascript框架。Kendo UI for React能够为客户提供更好的用户体验,并且能够更快地构建更好的应用程序。
优化性能是在交付React应用程序之前要考虑的一项重要技术,您可以探索优化React应用程序的不同方法,这些方法可以显着提高应用程序的速度和整体用户体验。
在构建任何React应用程序时,会考虑到应用程序应如何工作和最终效果,团队或开发人员需要寻找技巧来针对最终用户的体验优化应用程序。很多时候,您会忽略此操作,但是在本文中,我将分享五种方法来开始优化应用程序以获得更好的性能。
React是一个用于构建用户界面的JavaScript库,React提供了几种方式来最大程度地减少更新UI所需的昂贵DOM操作数量。对于许多应用程序,使用React将快速创建用户界面,无需进行大量工作来专门针对性能进行优化。不过有几种方法可以加快您的React应用程序的速度,一起深入学习一下吧。
在使用React时,有时需要渲染多个元素或返回一组相关项。 这是一个例子:
function App() { return ( <h1>Hello React!</h1> <h1>Hello React Again!</h1> ); }
如果尝试使用上面的代码运行应用程序,则会遇到错误,指出必须将Adjacent JSX元素包装在一个封闭的标记中,这意味着您需要将两个元素都包装在父div中。
function App() { return ( <div> <h1>Hello React!</h1> <h1>Hello React Again!</h1> </div> ); }
这样做可以修复错误,但是会带来一定程度的风险。 您正在向DOM添加一个额外的节点,这不是必需的。 在这样的情况下,以上是将被包含在父组件内的子组件,这将成为问题。
function Table() { return ( <table> <td>This is a Table Component</td> <Columns /> </table> ); } function Columns() { return ( <div> <td>Hello React!</td> <td>Hello React Again!</td> </div> ); }
由于添加了额外的div,因此Table组件的结果HTML将无效。
function Table() { return ( <table> <td>This is a Table Component</td> <div> <td>Hello React!</td> <td>Hello React Again!</td> </div> </table> ); }
看一下使用React Fragment解决此问题的更好方法,该方法不会在DOM中添加任何其他节点。 语法如下所示:
function Columns() { return ( <React.Fragment> <td>Hello React!</td> <td>Hello React Again!</td> </React.Fragment> ); }
您也可以使用短语法<> </>来声明一个Fragment。
function Columns() { return ( <> <td>Hello React!</td> <td>Hello React Again!</td> </> ); }
优化React应用程序的另一种方法是确保在部署之前将您的应用程序捆绑在生产环境中,默认情况下,您的应用程序处于开发模式,这意味着React将包含有用的警告。这在您进行开发时非常有用,但它可能会使您的应用变大、响应速度也比平时慢。如果您的项目是使用create-react-app构建的,则可以通过在部署之前运行npm run build来解决此问题,这将在可部署的build /文件夹中创建应用程序的生产就绪版本。您可以使用React Developer Tools确认您的应用程序处于开发还是生产模式。
如果React图标为带有深色背景的蓝色,则表明您的应用处于生产模式。
如果您的React应用处于开发模式,则图标将切换为红色背景,如下图所示。
另外值得注意的是,如果您通过CDN使用React,则应记住将React从开发文件更新为适合生产的文件。
<script src="//unpkg.com/react@16/umd/react.production.min.js"></script> <script src="//unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
延迟加载是一种用于优化和加快应用程序渲染时间的出色技术,延迟加载的想法是仅在需要时才加载组件。 React与React.lazy API捆绑在一起,因此您可以将动态导入呈现为常规组件,而不是像这样加载常规组件:
import LazyComponent from './LazyComponent';
您可以通过使用惰性方法来呈现组件来降低性能风险。
const LazyComponent = React.lazy(() => import('./LazyComponent'));
React.lazy采用了必须调用动态import()的函数,然后这将返回一个Promise,该Promise解析为一个带有默认导出的模块,该模块包含一个React组件。
lazy组件应呈现在Suspense组件内,这允许您在等待lazy组件加载时将回退内容添加为加载状态。
import React, { Suspense } from 'react'; const LazyComponent = React.lazy(() => import('./LazyComponent')); function MyComponent() { return ( <div> <Suspense fallback={<div>Loading....</div>}> <LazyComponent /> </Suspense> </div> ); }
React.memo是优化性能的好方法,因为它有助于缓存功能组件。
它的工作原理是:使用此技术呈现函数时,它将结果保存在内存中,并且下次调用具有相同参数的函数时,它返回保存的结果,而无需再次执行该函数,从而节省了带宽。
在React的上下文中,函数是功能组件,参数是道具。 这是一个例子:
import React from 'react'; const MyComponent = React.memo(props => { /* render only if the props changed */ });
React.memo是一个高阶组件,与React.PureComponent相似,但使用的是功能组件而不是类。
当您要呈现巨大的表或数据列表时,可能会大大降低应用程序的性能。虚拟化可以借助诸如react-window之类的库在这种情况下提供帮助,react-window通过仅呈现列表中当前可见的项目来帮助解决此问题,从而可以有效地呈现任何大小的列表。
import React from 'react'; import { FixedSizeList as List } from 'react-window'; import './style.css'; const Row = ({ index, style }) => ( <div className={index % 2 ? 'ListItemOdd' : 'ListItemEven'} style=/templates/> Row {index} </div> ); const Example = () => ( <List className="List" height={150} itemCount={1000} itemSize={35} width={300} > {Row} </List> );
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:慧都网通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
全新升级的Kendo UI,是创建数据丰富的Web应用程序的最完整UI库。
Kendo UI Support for React支持React Javascript框架,更快地构建更好的应用程序。
Kendo UI for jQuery完整的jQuery UI组件库,可快速构建出色的高性能响应式Web应用程序。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢