React: 对帐性能函数与类组件

创建于 2019-07-11  ·  3评论  ·  资料来源: facebook/react

您要请求功能还是报告错误
都不是/错误

目前的行为是什么?
在将类组件迁移到函数组件(使用钩子)时,我注意到性能显着下降。 我有一个组件(称为TreeNodeComponent ),它是树结构的一部分。 根据树的大小,可以看到数百个实例。

将函数组件包装在 PureComponent 中显着减少了观察到的“渲染时间”。 (从~160ms 到~60ms)

“渲染时间”,在 Chrome Dev Tools 中观察到

Bildschirmfoto 2019-07-11 um 16 24 10

语境:

该应用程序在tree-structure呈现数百个这样的TreeNodeComponent tree-structure 。 更新父级时,需要协调所有直接子级。
项目: https :

什么是预期行为?
功能组件和类组件之间的性能相当。

哪些版本的 React 以及哪些浏览器/操作系统受此问题影响?

操作系统
铬 73 / 电子 5.0.5
反应 16.8
打字稿和网络包

最有用的评论

将函数组件包装在 PureComponent 中显着减少了观察到的“渲染时间”。 (从~160ms 到~60ms)

如果渲染TreeNodeComponent很昂贵,那是预期的。 如果道具没有改变, React.PureComponent提前退出。

在将类组件迁移到函数组件(使用钩子)时,我注意到性能显着下降。

你是说从一个扩展React.Component到一个函数组件会导致性能下降吗? 或者你已经在使用React.PureComponent (或shouldComponentUpdate

您可以使用React.memo来获得与函数组件相同的救助语义。

所有3条评论

将函数组件包装在 PureComponent 中显着减少了观察到的“渲染时间”。 (从~160ms 到~60ms)

如果渲染TreeNodeComponent很昂贵,那是预期的。 如果道具没有改变, React.PureComponent提前退出。

在将类组件迁移到函数组件(使用钩子)时,我注意到性能显着下降。

你是说从一个扩展React.Component到一个函数组件会导致性能下降吗? 或者你已经在使用React.PureComponent (或shouldComponentUpdate

您可以使用React.memo来获得与函数组件相同的救助语义。

我从React.Component迁移到shouldComponentUpdate

我使用React.useMemo来避免“渲染”。
React.memo产生的结果与PureComponent结果一样好。 (~50-60ms)

非常感谢您的澄清。

我没有得到哪个更好的执行:功能组件或类组件。 对于长列表,我应该使用什么

此页面是否有帮助?
0 / 5 - 0 等级