- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当导航到具有 250 个重复组件的路线时,我遇到了 React 和 React-router 的延迟。我用 chrome 进行了分析,发现瓶颈位于“ReactCompositeComponentMixin.mountComponent”。该函数本身花费了 36.1ms,总共花费了 570.7ms。
我注意到访问react-router中的路由会导致分配的routehandler组件(保存这250个重复组件)每次都重新初始化。在这种情况下,该路由处理程序组件的状态对象是不可变的,但我无法利用它的好处,因为 shouldComponentUpdate 永远不会被触发。
我想知道这是否是 react 的一个已知问题。如果是,那么我将尝试在初始加载时渲染有限的记录,并在用户向下滚动时加载其余记录。
所有组件都是“纯粹的”,不执行复杂的计算。
重复组件的html结构如下:
<section data-reactid=".0.3.0.$3553">
<div data-reactid=".0.3.0.$3553.0"><span data-reactid=".0.3.0.$3553.0.0">TEST</span><span data-reactid=".0.3.0.$3553.0.1">TEST</span>
</div>
<header data-reactid=".0.3.0.$3553.1">
<h1 data-reactid=".0.3.0.$3553.1.0">TEST</h1>
</header>
<footer data-reactid=".0.3.0.$3553.2">TEST</footer><i data-reactid=".0.3.0.$3553.3"></i>
<button data-reactid=".0.3.0.$3553.4">TEST</button>
<div data-reactid=".0.3.0.$3553.5 ">
<button data-reactid=".0.3.0.$3553.5.0 ">TEST</button>
</div>
</section>
最佳答案
由于您在渲染列表时遇到此性能问题,我的直觉是考虑 keys
渲染应用程序时您是否看到警告?
我建议添加一个独特的 key
归因于每个重复结构。
最简单但远非最好的方法是添加 index
arrayOfData.map((data, index) => <RepeatedComponent key={index} />)
这将为每个 key
分配一个唯一的值,有problems用这种方法。
最好的方法是拥有 id
作为您的 data
的一部分,也许是unique identifier ,你可以像这样使用
arrayOfData.map(data => <RepeatedComponent key={data.id} />)
这将带来生成 id
的负担并确保它对您来说是独一无二的,但这是最好的方法。
关于reactjs - react 性能: rendering medium size list with obvious delay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31418571/
给定一个包含一定数量的方括号和其他字符的字符串,我想找到所有以左方括号和一定数量的字母开头的右方括号。例如,如果字符串是 ] [abc] [123] abc] 我只想找到第二个右括号。 下面的正则表达
我用这个标题的意思是,在某些情况下,在构建整个程序之后,它的第一次执行将花费大约25秒才能启动(直到控制台上的第一个printf显示)。下一次执行几乎立即开始(如应执行)。添加/删除空间并再次编译,之
考虑面向对象的语言: 大多数人都有面向对象编程背景,熟悉各种语言中常见且直观的界面,这些界面捕获了 Java 的精髓 Collection & List接口(interface)。 集合是指不一定具有
在看visual c++(VS2017 RC)生成的代码看到简单情况下的动态分支(虚拟调用)时,我感到非常惊讶。 所以我用编译器资源管理器尝试了以下代码: struct Base { virtua
为什么使用切片浅复制列表比使用内置的 list 快得多? In [1]: x = range(10) In [2]: timeit x_ = x[:] 10000000 loops, best of
我一直在构建一些有趣的可视化效果,这些可视化效果依赖于 VBA 代码为 Excel 中的子字符串设置不同颜色的能力。对于包含字符串的单元格,语法如下所示 rCell.Characters(start,
我有一个基于 Windows.Forms 的 .NET 桌面应用程序,它将特权信息存储在磁盘上的文件中(不使用 .NET 配置文件),使用对称加密算法(例如使用 MS 的 CryptoAPI 的 Tr
今天我一直在尝试用 three.js 构建我的第一个天空盒。我已经阅读了很多教程,我最终得到的代码是基于这个:http://learningthreejs.com/blog/2011/08/15/le
我正在开发一个有问题的媒体播放器应用程序。当我的手机自动连接到我的汽车音响时,我的媒体播放器应用程序会自动开始播放歌曲。即使我从来没有告诉它这样做。 这不是什么大问题,但在播放大约一秒钟后,音频就完全
我在 VS2012 中写道: int main(){ char *myshell = "\x50" // push eax "\x58" // pop eax "\
问题:我想在 Python 中使用 OpenCV 检测给定图像中的线条。虽然有多条明显的垂直线,但普通 HoughLines 和概率 HoughLines 都没有找到它们。由于我花了很多时间研究参数,
我认为这是一个简单的查询,但它需要“永远”。我不太擅长 SQL 优化,所以我想我可以问问你们。 这是带有 EXPLAIN 的查询: EXPLAIN SELECT * FROM `firms_f
有几个关于如何做到这一点的答案(this 和 that)建议使用自定义驱动程序,这看起来很好。 但是,当给定文件在merged 分支中没有更改时,会出现这种特殊情况,因此 git 甚至不会调用 mer
我一直在 Laravel 伪造的配置服务器上运行一个应用程序。我们有一些正在排队的电子邮件作业,我们使用 Horizon 来管理我们的队列。这一直没有任何问题,但由于某种原因,我们损坏了一些东西,
我有一个正在运行的服务,该服务使用发送给它的正则表达式并使用它从字符串中检索值。 我可以在类中创建一个 main 方法并调试正则表达式 (?<=\\().+?(?=\\){1})它完美地工作。 但是,
我正在学习 C++ 中的虚函数和虚表。但是,我不明白为什么需要动态绑定(bind)。编译器是否没有所有信息来确定函数调用是针对派生函数还是基函数,例如此处: class Base1 { publ
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
当导航到具有 250 个重复组件的路线时,我遇到了 React 和 React-router 的延迟。我用 chrome 进行了分析,发现瓶颈位于“ReactCompositeComponentMix
问题 我正在尝试使用 opencv2 来检测静止图像中的 PlayStation Move 运动 Controller 。为了增加球体和背景之间的对比度,我决定修改输入图像以自动缩放每个 channe
我正在用 Idris 编写一个基本的 monadic 解析器,以适应与 Haskell 的语法和差异。我有基本的工作,但我坚持尝试为解析器创建 VerifiedSemigroup 和 Verified
我是一名优秀的程序员,十分优秀!