Mitos y Leyendas de React

This ad is not shown to multipass and full ticket holders
JS Nation
JSNation 2026
June 11 - 15, 2026
Amsterdam & Online
The main JavaScript conference of the year
Upcoming event
JSNation 2026
JSNation 2026
June 11 - 15, 2026. Amsterdam & Online
Learn more
Bookmark
Rate this content
Sentry
Promoted
Code breaks, fix it faster

Crashes, slowdowns, regressions in prod. Seer by Sentry unifies traces, replays, errors, profiles to find root causes fast.

Las charlas exploran varios patrones y conceptos engañosos en React, que parecen ser "conocimiento común", pero que muchos (si no la mayoría) de los desarrolladores entienden mal o simplemente no son conscientes de ellos. Algunos ejemplos, cubiertos en la charla (y más):
* que "el componente de React se vuelve a renderizar cuando cambian sus props" (esto no es cierto)
* que envolver un componente en React.memo evitará su re-renderizado (no siempre es cierto)
* que el uso de Context causa re-renderizados y es malo para el rendimiento (no siempre es cierto, a veces Context puede reducir el número de re-renderizados en la aplicación)
* que crear un elemento como este `const A = <Child />` es cuando se activa el ciclo de vida de renderizado de Child (no es cierto)

This talk has been presented at React Summit 2023, check out the latest edition of this React Conference.

FAQ

La autora trabajó durante cinco años en Atlassian, específicamente en el desarrollo del producto Jira.

La autora se mudó de Australia a Austria porque encontró más fácil escribir 'Austria' y estaba buscando un cambio de ambiente, alejándose del clima agradable y las playas perfectas de Australia.

Actualmente, la autora está interesada en el rendimiento de React, especialmente en cómo gestionar y optimizar las re-renderizaciones en las aplicaciones.

Una re-renderización innecesaria en React ocurre cuando componentes de la aplicación se actualizan sin necesidad, lo cual puede hacer que la aplicación se vuelva lenta y tenga retrasos. La autora busca eliminar este tipo de re-renderizaciones para mejorar el rendimiento.

Un mito común es que los componentes en React solo se re-renderizan debido a cambios en sus props, lo cual no es cierto. Las re-renderizaciones son más a menudo iniciadas por cambios en el estado del componente.

El contexto puede ser útil para evitar re-renderizaciones innecesarias al permitir que solo los componentes específicos que necesitan datos se actualicen, en lugar de propagar la actualización a través de todo el árbol de componentes.

Usar el índice de un array como clave es una mala práctica porque puede llevar a re-renderizaciones ineficientes y errores, especialmente en listas dinámicas donde los ítems pueden cambiar de posición, lo que confunde a React sobre qué ítems han cambiado realmente.

Nadia Makarevich
Nadia Makarevich
22 min
06 Jun, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta charla discute mitos y conceptos erróneos en React que pueden impactar los re-renderizados. Cubre re-renderizados innecesarios y la idea errónea de que las props desencadenan re-renderizados. La charla también explora el papel de la memoización y el contexto en la reducción de re-renderizados. Además, destaca la importancia de usar correctamente el atributo key para optimizar el renderizado. La charla concluye discutiendo la separación de estado y API en el contexto y el uso de herramientas de gestión de estado como Redux.
Available in English: React Myths And Legends

1. Introduction to Myths and Legends in React

Short description:

Bienvenidos a la charla sobre mitos y leyendas en React. Mi nombre es Nadia, y he sido desarrolladora durante mucho tiempo. Hoy, quiero compartir algunos mitos y conceptos erróneos que pueden afectar negativamente las re-renderizaciones en todas las aplicaciones. Pero antes de eso, recordemos rápidamente qué es el montaje, las re-renderizaciones y las re-renderizaciones innecesarias en React.

Hola a todos. Bienvenidos a la charla sobre mitos y leyendas en React. Permítanme comenzar con una pequeña introducción. Mi nombre es Nadia. He sido desarrolladora durante mucho tiempo. Trabajé para Atlassian durante unos cinco años en un producto que algunos de ustedes podrían conocer y amar llamado Jira. Hasta hace muy poco, vivía en Australia rodeada de loros y canguros. Pero hace unos meses, me cansé de todo este buen clima y playas perfectas y me mudé a Austria por la única razón de que soy perezosa y Austria es más fácil de deletrear.

Además, soy un poco nerd. Uno de mis pasatiempos nerd es investigar cómo funcionan las cosas en detalle y luego escribir artículos profundos sobre esos temas. Usualmente escribo para desarrolladores de front-end, más específicamente para desarrolladores de React. Uno de los principales enfoques de esas investigaciones, lo que más me interesa recientemente es el rendimiento de React. Y el tema del rendimiento en React es increíblemente interesante. React es una herramienta fantástica que nos permite escribir aplicaciones complicadas de manera muy fácil y rápida. Pero como resultado, también es muy fácil escribir código que hará que nuestras aplicaciones sean muy lentas y con retraso. Y la mayoría de las veces, es debido a las re-renderizaciones. Re-renderizamos demasiado rápido o demasiados o componentes demasiado pesados. Así que la clave para un buen rendimiento en React es saber y poder controlar cuándo los componentes se montan y re-renderizan. Y luego prevenir aquellos que son innecesarios.

Así que hoy, quiero compartir algunos mitos y conceptos erróneos que son bastante comunes entre los desarrolladores y que pueden afectar negativamente la situación de las re-renderizaciones en todas las aplicaciones. Pero antes de hacer eso, recordemos rápidamente qué es el montaje, las re-renderizaciones y qué son las re-renderizaciones innecesarias. Todo comienza con el montaje. Esta es la primera vez que el componente aparece en la pantalla. Es cuando React inicializa y conecta todo, por lo tanto, la renderización inicial dispara todos los callbacks y efectos de uso por primera vez. Después de eso, si tu aplicación es interactiva, será el momento de las re-renderizaciones. La re-renderización es cuando React actualiza un componente ya existente con algunos datos nuevos. Estas suelen ocurrir como resultado de la interacción del usuario con tu interfaz o de algunos datos externos que llegan. Las re-renderizaciones son una parte crucial del ciclo de vida de React. Sin ellas, no habría actualizaciones en la interfaz y, como resultado, no habría interactividad. Así que no es algo de lo que quisiéramos deshacernos.

2. Re-renderizaciones Innecesarias y el Gran Mito de las Re-renderizaciones

Short description:

Las re-renderizaciones innecesarias ocurren cuando toda la aplicación se re-renderiza en cada pulsación de tecla, afectando negativamente el rendimiento. El Gran Mito de las Re-renderizaciones afirma que un componente se re-renderiza cuando sus props cambian, pero esto no es cierto. Las re-renderizaciones son provocadas por cambios de estado, que propagan actualizaciones a otros componentes de manera recursiva.

Las re-renderizaciones innecesarias, sin embargo, son una historia completamente diferente. Imagina una aplicación de React, solo un árbol de componentes como cualquier otra aplicación, y en algún lugar en la parte inferior de este árbol, tenemos un componente de entrada donde un usuario puede escribir algo. Cuando esto sucede, quiero actualizar el estado de esta entrada y todo lo relacionado con los datos del usuario, como mostrar algunas sugerencias útiles mientras el usuario está escribiendo. Esto es re-renderización. Lo último que quiero, sin embargo, es que toda la aplicación se re-renderice en cada pulsación de tecla. Imagina lo lento que será escribir en este campo si algo así sucede. Definitivamente no es algo que alguien llamaría una aplicación de rendimiento. Este es un ejemplo de re-renderizaciones innecesarias, y esas son exactamente el tipo de re-renderizaciones de las que querríamos deshacernos.

Y cuando se trata de prevenir re-renderizaciones, existe este gran mito en el que de alguna manera todos creen. Yo lo llamo el Gran Mito de las Re-renderizaciones. Va así. Un componente se re-renderiza cuando sus props cambian. Es increíble, realmente. Todos lo creen. Nadie lo duda. Y simplemente no es cierto. Para entender eso, profundicemos un poco más en por qué ocurren las re-renderizaciones en primer lugar. Todo comienza con el cambio de estado. Cualquier desarrollador de React probablemente reconocerá el código. Tenemos un componente padre. Renderiza un componente hijo y tiene un hook useState. Cuando se activa setState, todo el componente padre se re-renderizará. El cambio de estado es la fuente inicial de todas las re-renderizaciones. Es el rey de las re-renderizaciones por así decirlo. Por eso está en la corona. Después del cambio de estado, es el momento para que React propague esta actualización a otros componentes. React hace esto de manera recursiva. Toma los hijos directos de un componente con estado, re-renderiza esos, luego re-renderiza los hijos, y así sucesivamente hasta que alcanza el final del árbol de componentes o se detiene explícitamente. Esta es la siguiente razón para que un componente sea re-renderizado cuando su componente padre se re-renderiza. Si miramos el código, una vez que ocurre el cambio de estado en el componente padre, todos los hijos que este componente tiene se re-renderizarán como resultado.