首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在开始时,ReactDOM.render函数的性能有多大?

在开始时,ReactDOM.render函数的性能有多大?
EN

Stack Overflow用户
提问于 2022-09-16 20:39:11
回答 1查看 38关注 0票数 1

同时使用多个ReactDOM.render函数对性能可能有多大影响?例如,直到30+ ReactDOM.render调用。

我知道这听起来可能很奇怪。我目前正在开发一个使用单个ReactDOM.render功能的大型web项目。我们提出的最大问题之一是更新到Reactive18,因为这个项目很大,包含了很多遗留代码,所以有很多地方可以使用最新的React版本不支持的遗留方法。我想在多个独立的子应用程序(即.a)上拆分一个SPA。(微前端),但仍然使用单一部署构建,具有内存缓存,可以在应用程序之间共享,为用户保持SPA体验等。然而,同时也具有在较新版本的React上逐步迁移的能力。

通过重构两个子应用程序,我们已经成功地创建了一个概念的工作证明。目前,每个应用程序的启动看起来都是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Subscribe on URL path change.
observer.on('changed', () => {
  if (window.location.path.includes(targetPath)) {
    ReactDOM.render(<App />, elementContainer);
  } else {
    ReactDOM.unmountComponentAtNode(elementContainer);
  }
});

正如你所看到的,除非我们进入特定的路线,否则我们不会立即作出反应。但理想情况下,我更希望应用程序的入口点是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const AppEntryPoint = () => {
  <Switch>
    <Route path="...">
      <App />
    </Route>
    <Route>{null}</Route>
  </Switch>
};

ReactDOM.render(<AppEntryPoint />, elementContainer);

问题是:在像这样的30+入口点的启动阶段,情况会有多糟?还有其他我没有注意到的严重问题吗?

EN

回答 1

Stack Overflow用户

发布于 2022-09-16 21:02:20

实际上,我也做过类似的工作,升级了一个遗留应用程序,而且还不错。我认为累积渲染时间与在一棵树中的渲染时间非常相似。

然而,我认为你在做这件事之前应该仔细考虑。新闻稿上写着:

虽然更改通常很小,但您仍然有能力按自己的速度进行更改。React 18中的新呈现行为仅在应用程序中使用新功能的部分中启用。

老实说,它可能是由状态更新批处理导致的少数损坏组件。您的方法不一定是不正确的,取决于情况有多糟;但是,只有当情况非常极端时,您才应该这样做。这将付出巨大的代价,而且也很难逆转。也许少数常见的组件有问题?

您只需将所有状态更新包装在一个刷新中,然后向后工作以删除它们:https://blog.devgenius.io/understanding-automatic-batching-in-react-18-fb5b8fdf062d

我通常会鼓励像您这样的增量方法,但是您应该仔细考虑增量和大爆炸的成本,因为相对于结束状态,增量方法的拟议更改会有多大。

我还将添加,如果您这样做,可能最好添加占位符HTML元素到页面-然后查询这些和加载反应树。耦合到URL将使代码更难移动。这在过去对我起过作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73752174

复制
相关文章
投资人工智能有多大的风险和多大的回报?
据外媒报道,虽然我们无法预测人工智能会在未来10-20年取得何种惊人的进步,但可以肯定的是,该技术将为人类带来巨大的福利。到2018年,机器人将督导300万人类工人进行日常工作;而到2020年,智能机器将成为超过30%的企业首席信息官(CIO)的首要投资重点。从新闻撰写到客户服务,许多工作正在被愈发先进的人工智能所替代,它们已经可以成功复制人类的经验和能力。人工智能曾经一度被看作是技术的未来,而现在它们已经提前迎来了自己的时代,剩下的唯一问题是如何将它推向大众市场。 时光飞逝,许多先来者已经从AI上获益颇多
机器人网
2018/04/16
9450
投资人工智能有多大的风险和多大的回报?
安全科普:流量劫持能有多大危害?
作者 gethostbyname 上一篇文章,介绍了常见的流量劫持途径。然而无论用何种方式获得流量,只有加以利用才能发挥作用。 不同的劫持方式,获得的流量也有所差异。DNS 劫持,只能截获通过域名发起的流量,直接使用 IP 地址的通信则不受影响;CDN 入侵,只有浏览网页或下载时才有风险,其他场合则毫无问题;而网关被劫持,用户所有流量都难逃魔掌。 在本文中,我们通过技术原理,讲解如下问题: – 为什么喜欢劫持网页? – 只浏览不登陆就没事吗? – 自动填写表单有风险吗? – 离开劫持环境还受影响吗? – 使
FB客服
2018/02/02
1.4K0
安全科普:流量劫持能有多大危害?
Power Pivot智能日期函数——开始时间
(一) 开始时间 StartofMonth/StartofQuarter/StartofYear A) 语法 StartOfMonth ( <Dates> ) StartOfQuarter ( <Dates> ) StartOfYear ( <Dates>, [YearEndDate]) 位置 参数 描述 第1参数 Dates 包含时间的列 可选第2参数 YearEndDate 结束日期是一个年份常量值 B) 返回 表——只有一个值的单列日期表 C) 注意事项 第一参数日期的格式可以有以下几种 有关日期时
逍遥之
2020/03/24
9520
ReactDOM.render在react源码中执行的流程
通常是如下图使用,在提供的 container 里渲染一个 React 元素,并返回对该组件的引用(或者针对无状态组件返回 null)。本文主要是将ReactDOM.render的执行流程在后续文章中会对创建更新的细节进行分析,文中的源代码部分为了方便阅读将__DEV__部分的代码移除掉了。
flyzz177
2022/12/19
8680
ReactDOM.render在react中执行之后发生了什么?
通常是如下图使用,在提供的 container 里渲染一个 React 元素,并返回对该组件的引用(或者针对无状态组件返回 null)。本文主要是将ReactDOM.render的执行流程在后续文章中会对创建更新的细节进行分析,文中的源代码部分为了方便阅读将__DEV__部分的代码移除掉了。
flyzz177
2022/12/08
7170
函数的凹凸性_函数凹凸性与图像
设函数 f(x) 在区间 I 上有定义,在 I 内任取两点 x_{1},x_{2},对任意的 \lambda \in (0,1),有 \lambda x_{1} + (1-\lambda )x_{2} \in (x_{1},x_{2})。
全栈程序员站长
2022/09/19
5110
函数的凹凸性_函数凹凸性与图像
ReactDOM.render在react源码中执行之后发生了什么?
通常是如下图使用,在提供的 container 里渲染一个 React 元素,并返回对该组件的引用(或者针对无状态组件返回 null)。本文主要是将ReactDOM.render的执行流程在后续文章中会对创建更新的细节进行分析,文中的源代码部分为了方便阅读将__DEV__部分的代码移除掉了。
flyzz177
2022/09/30
5580
「教科书级」数据能有多大作用?微软超强小模型引热议
当前,大模型一直在由不断增加的「大数据」来推动。「大模型 + 大数据」似乎已经成为构建模型的标准范式。但随着模型规模和数据量的不断增长,算力的需求会迅速膨胀。一些研究者尝试探索新思路。
机器之心
2023/09/19
5260
「教科书级」数据能有多大作用?微软超强小模型引热议
病毒对微生物群落及其生态功能有多大影响?
近两年在微生物组学领域,病毒获得了越来越多的关注。由于病毒个体微小,无独立代谢能力,目前对其所知甚少。研究者可以使用宏基因组数据挖掘潜在的溶源噬菌体,或者富集游离的病毒进行测序。尽管很多研究已经暗示病毒在环境中具有很高的丰度及多样性,且病毒基因组上的辅助代谢基因可能对生物地球化学循环有着重要的作用,然而病毒到底有多大的生态作用仍很难直观展现,因此也引起了很多研究者的质疑。本篇研究在海水环境中较为直观的展现了病毒对生物地球化学循环的影响,进一步加深了人们对于病毒生态功能的认识。
SYSU星空
2022/05/05
5490
病毒对微生物群落及其生态功能有多大影响?
ReactDOM.render在react源码中执行之后发生了什么?
通常是如下图使用,在提供的 container 里渲染一个 React 元素,并返回对该组件的引用(或者针对无状态组件返回 null)。本文主要是将ReactDOM.render的执行流程在后续文章中会对创建更新的细节进行分析,文中的源代码部分为了方便阅读将__DEV__部分的代码移除掉了。
flyzz177
2023/01/06
5700
nginx 请求开始时间
用户反馈广告主平台上传视频满,在本地尝试重现,发现上传一个30M左右的视频大概花40s左右,多个视频上传还是串行,目前前端已经优化为了并行上传,但一个视频花费40s的问题还是需要解决,因此就想把每个步骤操作时间都记录一下排查问题
千往
2020/05/18
3.3K0
nginx 请求开始时间
“新物种”智能机器诞生可能性有多大?
有不少科学家与媒体上的评论文章,都对机器人与人工智能(artificial intelligence,AI)可能带来的危险提出过警告;这类对于人工智能以及所衍生的智能机器(intelligent machines,IM)应用──特别是在军事领域──的忧虑是可以理解的,但如果说智能机器实际上是人类从原始单细胞生物不断演化的过程中,出现的一个新分支呢? 若以上述的观点来看人工智能与智能机器,也许它们可能带来的危险并非是电影或科幻小说所描述的、将造成人类灭绝的灾难,而是一种会造成同样的人类灭绝结果、但无法控制的演
机器人网
2018/04/12
4530
数据分析,怎么做才能有前瞻性
有同学问:领导总让做“有前瞻性”的分析,不要说那些“大家都知道的事”。可到底什么是前瞻性?有时候明明写了预计未来情况,可还是被批判为:没啥前瞻性。真不知道咋办了。——今天系统解答一下。
接地气的陈老师
2019/12/09
1.1K0
判断目标函数的凹凸性
? 判断目标函数的凹凸性判断目标函数的凹凸性判断目标函数的凹凸性判断目标函数的凹凸性判断目标函数的凹凸性判断目标函数的凹凸性判断目标函数的凹凸性判断目标函数的凹凸性判断目标函数的凹凸性判断目标函数的凹
狼啸风云
2020/01/13
7710
判断目标函数的凹凸性
React源码解析之ReactDOM.render()
一、React更新的方式有三种: (1)ReactDOM.render() || hydrate(ReactDOMServer渲染) (2)setState (3)forceUpdate
进击的小进进
2019/09/05
1.4K0
React源码解析之ReactDOM.render()
刚开始时写的都很烂
我真正开始写JS的时候,大概是2008、09年,那时刚刚开始有前端的概念,当时还争论DIV、CSS什么的。当时做页面都是DIV满天飞,俗称DIV大泛滥。然后JS就是function接着又一个function,如果一个function解决不了,那就再里面再来一个function。同理,一个变量解决不了,就再来一个变量,都是全局的。当时都在一个JS里,从上往下摞,很长,很长,反正也没人看没人管。后来时间长了,自然就好了。 说这事是因为有许多人总是觉得那些所谓的大神,他们水平确实高。但他们在刚开始的时候,一样要写
web前端教室
2018/02/06
5470
ReactDOM.render在react源码中执行之后发生了什么?_2023-02-19
通常是如下图使用,在提供的 container 里渲染一个 React 元素,并返回对该组件的引用(或者针对无状态组件返回 null)。本文主要是将ReactDOM.render的执行流程在后续文章中会对创建更新的细节进行分析,文中的源代码部分为了方便阅读将__DEV__部分的代码移除掉了。
flyzz177
2023/02/19
5180
线性筛求积性函数的模板
ACM常用模板合集 void sieve() { tot = 1; memset(vis, 0, sizeof(vis)); low[1] = 1; G[1] = 函数G(n) n=1时的定义 for (int i = 2; i <= mxn; i++) { if (!vis[i]) { pri[tot++] = i; low[i] = i; G[i] =
风骨散人Chiam
2020/10/28
5080
问题有多大,中台就有多大
大部分的商业行为都是为了解决现实问题,而大部分战略级决策的形成也都是基于这些问题的解决。在云市场,国内外巨头早年的筚路蓝缕,便多是着眼当下——这一点上,科技公司所取得的成就,在相当范围内都取决于曾经遇到的问题。
IT创事记
2022/06/24
1.1K0
问题有多大,中台就有多大
React.createElement和ReactDom.render方法简单思路
实际上,JSX 仅仅只是 React.createElement(component, props, ...children) 函数的语法糖,因此,使用 JSX 可以完成的任何事情都可以通过纯 JavaScript 完成。 例如,用 JSX 编写的代码: class Hello extends React.Component { render() { return <div>Hello {this.props.toWhat}</div>; } } ReactDOM.render( <H
刘嘿哈
2022/10/25
2860

相似问题

一个Azure函数能有多大?

10

函数调用次数对性能有多大影响?

53

在python中,变量能有多大?

10

在C语言中,malloc能有多大?

60

在“问题”出现之前,Sourcesafe DB能有多大?

80
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文