Para solucionar esto, asegúrate de tener la matriz de dependencias de useMemo y useCallback correcta, y lo bueno es que el compilador realmente te dice qué falta. Así que cuando paso mi hook dentro de React Compiler, dice que, oye, te faltan los valores min y max, así que probablemente deberías añadir eso. Y esto es sinceramente bastante útil. Esto parece un problema muy pequeño, pero en realidad es bastante común, y puede suceder mucho cuando trabajas en equipos. Donde he trabajado en un hook, he escrito la matriz de dependencias exacta, que se utiliza en la lógica, pero otra persona entra, actualiza la lógica, pero olvida actualizar la matriz de dependencias.
La solución para esto es simplemente actualizar la matriz de dependencias para tener todas las dependencias, o incluso mejor, simplemente eliminar la memoización manual y dejar que React Compiler haga su magia. Ahora te estarás preguntando, ¿cómo encuentro tales problemas de compilación? Bueno, la mejor manera es usar el plugin eslint para ver el análisis del compilador en el propio editor. Te mostrará dónde estás rompiendo las reglas de React, qué deberías hacer para solucionarlas, y también te guía a la documentación correcta para entender cuál sería la solución real para ese escenario particular. También puedes usar el React Compiler Playground para ver el análisis y los problemas y la salida del compilador directamente en la web. Así que puedes simplemente traer tu código, no tienes que preocuparte por instalar dependencias o cualquier otra cosa, es análisis estático, así que simplemente traes tu código JavaScript o cualquier código TypeScript, y puedes ver la salida, cualquier error o cualquier problema. Es sinceramente una herramienta realmente genial para realmente aprender cómo está funcionando el compilador y cómo está trabajando internamente también.
Ahora, la tercera advertencia que encontré fue que las bibliotecas externas que usas en tu proyecto no serán optimizadas automáticamente a menos que la propia biblioteca use el compilador durante la construcción. Ahora, este fue un hallazgo sorprendente. Pensé que todo mi proyecto sería optimizado, incluyendo cualquier componente externo que pudiera estar usando. Pero noté que muchos de mis componentes seguían re-renderizándose, y estos componentes realmente no fueron escritos por mí. Venían de un paquete de terceros que estaba usando. En este caso, viene de un paquete llamado RQI, que proporciona componentes de alto nivel para elementos comunes de UI como acordeón, menú, y así sucesivamente. Así que estos componentes no fueron memorizados por el compilador y seguían re-renderizándose debido a algún re-renderizado innecesario. Ahora, esto no es ideal. Desearía que hubiera una mejor solución, pero sinceramente la solución es que el compilador se ejecute en el código fuente real de la biblioteca y se publique la nueva versión usando el compilador en el proceso de construcción, y luego puedes instalarlo y obtener el beneficio completo del compilador.
Comments