Además, solo voy a señalar que, si estás usando React 19 o superior, hay un plugin llamado React Compiler que podría manejar todo esto por ti. No sabía sobre esto en el momento de este proyecto, así que no pude usarlo. Siento que vale la pena mencionarlo, porque se supone que maneja automáticamente todas estas decisiones. No me sorprendería si esta sección fuera completamente obsoleta en unos años.
La sintaxis para memo es súper fácil. Básicamente, solo tienes tu componente, y cuando lo exportas, simplemente lo envuelves en memo. Puedes envolverlo como quieras, pero esta es la forma más fácil para mí de hacerlo. Nuevamente, es tan fácil que te sentirías tentado a hacerlo en todas partes, pero ten cuidado.
Hablemos de algunas herramientas útiles de depuración, porque nunca va a funcionar a la primera intento. El primer lugar al que vas a mirar, por supuesto, es DevTools de Chrome. La pestaña de memoria, hay muchas cosas aquí. Ciertamente no soy un experto en ello. Si recién estás comenzando en el mundo del perfilado, como yo, iría a la sección de asignaciones en la línea de tiempo, presionaría grabar por unos segundos, dejaría que corriera, y luego obtendrías algo que se ve así.
Nuevamente, a un nivel muy básico, estaba buscando dos cosas. Estaba buscando fiber aquí, fiber siendo el motor de reconciliación interno de React. Si vemos eso, significa que React está haciendo demasiado trabajo, porque, nuevamente, no queremos estar re-renderizando mucho, queremos dejar que el canvas haga el trabajo por nosotros, y estaría buscando fugas de memoria. Así que si esta parte gris sigue subiendo, en lugar de mantenerse relativamente estable, sabemos que podríamos tener un problema. Chrome tiene una paleta de FPS. Si abres DevTools y presionas Control-Shift-P, el mismo comando que en VS Code para abrir la paleta de comandos, puedes simplemente escribir FPS, y aparecerá esta pequeña caja, y es maravillosa. Te dice en cualquier momento que tu animación se está ralentizando. Esto también nos muestra que estamos obteniendo nuestra aceleración de GPU, y que tenemos suficiente memoria restante. Hermoso. Finalmente, si todo lo demás falla, tienes console.time y time.
end. A la gente le gusta burlarse de los desarrolladores front-end por usar en exceso los registros de consola, pero funcionan, y console.time y time.end son como el primo raro de console.log. Así que si llamaras a console.time con algún tipo de cadena en él, y luego realizaras una operación costosa, y luego llamaras a console.time.end con la misma cadena, obtendrás un tiempo exacto de cuánto tiempo tomó esa operación.
Comments