您要请求功能还是报告错误?
都不是/错误
目前的行为是什么?
在将类组件迁移到函数组件(使用钩子)时,我注意到性能显着下降。 我有一个组件(称为TreeNodeComponent
),它是树结构的一部分。 根据树的大小,可以看到数百个实例。
将函数组件包装在 PureComponent 中显着减少了观察到的“渲染时间”。 (从~160ms 到~60ms)
该应用程序在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
来获得与函数组件相同的救助语义。
我从React.Component
迁移到shouldComponentUpdate
。
我使用React.useMemo
来避免“渲染”。
React.memo
产生的结果与PureComponent
结果一样好。 (~50-60ms)
非常感谢您的澄清。
我没有得到哪个更好的执行:功能组件或类组件。 对于长列表,我应该使用什么
最有用的评论
如果渲染
TreeNodeComponent
很昂贵,那是预期的。 如果道具没有改变,React.PureComponent
提前退出。你是说从一个扩展
React.Component
到一个函数组件会导致性能下降吗? 或者你已经在使用React.PureComponent
(或shouldComponentUpdate
)您可以使用
React.memo
来获得与函数组件相同的救助语义。