¿Quieres solicitar una función o informar de un error ?
ninguno / error
¿Cuál es el comportamiento actual?
Al migrar componentes de clase a componentes de función (con ganchos), noté una caída significativa del rendimiento . Tengo un componente (llamado TreeNodeComponent
) que es parte de una estructura de árbol. Dependiendo del tamaño del árbol, podrían verse cientos de instancias.
Envolver el componente de función en un PureComponent redujo significativamente el "tiempo de renderizado" observado. (De ~ 160 ms a ~ 60 ms)
La aplicación procesa cientos de estos TreeNodeComponent
en un tree-structure
. Cuando se actualiza un padre, todos los hijos directos deben reconciliarse.
Proyecto: https://github.com/thomasnordquist/MQTT-Explorer
¿Cuál es el comportamiento esperado?
Rendimiento comparable entre componentes funcionales y de clase.
¿Qué versiones de React y qué navegador / sistema operativo se ven afectados por este problema?
OSX
Cromo 73 / Electrón 5.0.5
Reaccionar 16.8
Mecanografiado y Webpack
Envolver el componente de función en un PureComponent redujo significativamente el "tiempo de renderizado" observado. (De ~ 160 ms a ~ 60 ms)
Eso es de esperar si renderizar TreeNodeComponent
es caro. React.PureComponent
retira temprano si los accesorios no han cambiado.
Al migrar componentes de clase a componentes de función (con ganchos), noté una caída significativa del rendimiento.
¿Está diciendo que pasar de una clase que extiende React.Component
a un componente de función provocó una regresión del rendimiento? ¿O ya estaba usando React.PureComponent
(o shouldComponentUpdate
)
Puede usar React.memo
para obtener la misma semántica de rescate con componentes de función.
Migré de React.Component
con shouldComponentUpdate
.
Yo uso React.useMemo
para evitar "renderizar".
React.memo
produce resultados tan buenos como los de PureComponent
. (~ 50-60 ms)
Muchas gracias por aclarar.
No entendí cuál se está desempeñando mejor: componentes funcionales o componentes de clase. ¿Qué debo usar para listas largas?
Comentario más útil
Eso es de esperar si renderizar
TreeNodeComponent
es caro.React.PureComponent
retira temprano si los accesorios no han cambiado.¿Está diciendo que pasar de una clase que extiende
React.Component
a un componente de función provocó una regresión del rendimiento? ¿O ya estaba usandoReact.PureComponent
(oshouldComponentUpdate
)Puede usar
React.memo
para obtener la misma semántica de rescate con componentes de función.