Y mientras miramos el perfil, estas son dos configuraciones que creo que son muy, muy importantes. Así que grabar que el componente Y se vuelve a renderizar. Así que esto te está diciendo, bueno, es el componente de celda, y fue el hook 30 el que cambió. Y luego hay otra configuración en el panel de componentes donde puede analizar los nombres de los hooks. Así que en lugar de tener este indefinido falso, falso, falso, en realidad te da los nombres que usaste en tu código. Así que estas son solo pequeñas cosas que pueden hacer que la depuración de estos problemas sea mucho más fácil.
Como dije, realmente no vimos este problema de rendimiento en el caso simple. Así que ahora ponemos un componente de celda personalizado, y lo hacemos artificialmente lento. Así que pondremos algo de lógica lenta allí, tal vez como un bucle for, que hace mucho trabajo, antes de renderizar las cosas. Así que estas son solo una idea de simular lo que un usuario podría proporcionarnos. Porque no estamos en control de lo que el usuario nos va a dar. Pero necesitamos asegurarnos de que la cuadrícula aún funcione bien en esas situaciones.
Así que cuando hicimos esto, lo pusimos en la cuadrícula, pudimos ver que teníamos este comportamiento lento nuevamente. Y esta vez en el perfil, se ve bastante diferente. Solo hemos logrado renderizarlo 10 veces. Así que esta es la razón por la que en lugar de tener muchas, muchas, muchas renderizaciones diferentes, y obtienes ese redimensionamiento suave, en su lugar tenemos esto, ya sabes, el navegador se queda atascado, se vuelve a renderizar. El navegador se queda atascado, se vuelve a renderizar. Así que puedes ver esto con las barras mucho más altas y el tiempo que estaban tomando. Y también podemos ver bastante claramente que es esta celda del ticker que hemos proporcionado, que es el cuello de botella, y que está bloqueando el navegador.
Así que si miramos rápidamente esto y decimos, bueno, ¿por qué se está renderizando tanto este componente? Ahora, en nuestro componente de celda, estábamos configurando el estilo a través de la propiedad de estado, digamos que tenemos left aquí. Así que nuestro controlador de celdas, que es lo que controla dónde están todas estas columnas, estaba diciendo, bueno, la posición izquierda está cambiando. Y eso es lo que esperarías. Y simplemente actualizaríamos el estado. Pero debido a que estamos actualizando el estado, React está volviendo a renderizar todo este componente. Y debido a que el estado se está actualizando en ese div, la celda personalizada es un hijo de eso. Y así, si no hay memorización o algún tipo de cachés allí, eso también se está volviendo a renderizar. Así que el primer paso es, bueno, podemos envolverlo y usar memo, o memo. Y luego también esto es algo de lo que el compilador de React se encargará por nosotros. Así que no voy a pasar mucho tiempo hablando de eso. Eso nos ayuda a mejorar el rendimiento.
Comments