Consejos sobre React Hooks que solo los profesionales conocen

Rate this content
Bookmark

La adición de la API de hooks a React fue un cambio bastante importante. Antes de los hooks, la mayoría de los componentos tenían que ser basados en clases. Ahora, con los hooks, estos son a menudo componentes funcionales mucho más simples. Los hooks pueden ser realmente simples de usar. Casi engañosamente simples. Porque todavía hay muchas formas en las que puedes equivocarte con los hooks. Y a menudo resulta que hay muchas formas en las que puedes mejorar tus componentes con una mejor comprensión de cómo se puede usar cada hook de React.

Aprenderás todo sobre los pros y los contras de los diversos hooks. Aprenderás cuándo usar useState() versus useReducer(). Veremos cómo usar useContext() de manera eficiente. Verás cuándo usar useLayoutEffect() y cuándo useEffect() es mejor.

This workshop has been presented at React Summit Remote Edition 2021, check out the latest edition of this React Conference.

FAQ

React Hooks son funciones que permiten a los desarrolladores de React usar estado y otras características de React sin tener que escribir una clase. Son útiles para encapsular funcionalidad de manera modular sin necesidad de utilizar componentes basados en clases.

Las reglas básicas para usar React Hooks incluyen: los Hooks deben ser llamados en el nivel superior de un componente funcional o dentro de un Hook personalizado, no se deben llamar dentro de bucles, condiciones o funciones anidadas, y cada Hook debe ser utilizado en el mismo orden durante cada renderizado.

Para seguir los valores cambiados en un formulario utilizando React Hooks, puedes utilizar el hook 'useState' para manejar los estados de los inputs del formulario y 'useEffect' para realizar acciones específicas cuando el estado cambie.

Un Hook personalizado en React es una función que comienza con 'use' y que puede llamar a otros Hooks dentro de ella. Es útil para reutilizar código de estado lógico entre componentes sin comprometer la encapsulación.

Para prevenir el comportamiento predeterminado en un formulario en React, puedes utilizar el método 'preventDefault()' dentro de la función que maneja el evento de envío ('onSubmit'). Esto evita que el navegador realice la acción predeterminada de enviar el formulario.

'useReducer' es un Hook en React que permite manejar estados complejos con una función reductora. Es útil cuando tienes una lógica de estado compleja que involucra múltiples sub-valores o cuando el próximo estado depende del anterior.

Para optimizar las actualizaciones de estado y evitar renderizados innecesarios en React, puedes utilizar 'React.memo' para memorizar componentes, 'useMemo' para memorizar resultados de funciones costosas y 'useCallback' para memorizar funciones, especialmente aquellas que se pasan como props a componentes hijos.

Maurice de Beijer
Maurice de Beijer
177 min
09 Jun, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta masterclass sobre Consejos de React Hooks explora los hooks más allá de lo básico, cubriendo errores comunes, hooks avanzados, creación de hooks personalizados y las reglas de los hooks. Demuestra el uso de los hooks useState, useEffect y useContext, así como la creación de hooks personalizados para gestionar el estado y realizar efectos secundarios. La masterclass también cubre el uso de los hooks useRef, useReducer y useLayoutEffect, y proporciona información sobre cómo funcionan los hooks de React bajo el capó. Concluye con la implementación de un componente proveedor y el uso de contexto y reductores para gestionar el estado complejo en componentes funcionales.

1. Consejos sobre React Hooks: Más allá de lo básico

Short description:

Bienvenidos a la masterclass sobre Consejos de React Hooks que solo los profesionales conocen. Esta es una masterclass avanzada donde exploraremos hooks más allá de lo básico. Cubriremos errores comunes, hooks avanzados, creación de hooks personalizados y las reglas de los hooks. En la segunda parte, crearemos un clon simplificado de una biblioteca de UI o formularios utilizando hooks y contexto. Asegúrate de tener Node, NPM y el repositorio de GitHub listo. Clona el repositorio, cambia a la rama de inicio y ejecuta NPM install. Utilizaremos vita o feet para desarrollar la aplicación de manera ligera y eficiente.

Entonces, bienvenidos a todos a esta masterclass sobre React Hooks Tips que solo los profesionales conocen. Esta es una masterclass interactiva, por lo que se espera que enciendas Visual Studio Code o cualquier editor que uses y escribas code. Compartiré el repositorio. De hecho, ya compartí el repositorio en la ventana de chat en Discord y en Zoom también. Pero, Discord es la ventana de chat principal, así que asegúrate de mantenerla abierta.

Entonces, ¿quién soy yo? Mi nombre es Boris De Beier, también conocido como The Problem Solver. Soy un desarrollador MVP de Microsoft, instructor, líder de equipo, hago todo tipo de cosas así. Mucho desarrollo de front-end con React. Eso es más o menos lo principal que hago. Mi nombre en Twitter, en borisdb. Si quieres seguirme, enviarme mensajes más tarde, o mi dirección de correo electrónico, en caso de que quieras hacer algo de eso. Así que, entre las muchas cosas que hago, también publico un boletín de noticias de React que se envía todos los miércoles. Así que, ayer, hubo otro. Siéntete libre de suscribirte. Solo haz clic en la imagen, o en el código QR, o escanea el código QR con tu teléfono. Si te registras, recibirás un correo electrónico a la semana con seis artículos de React y un video. ¿No te gusta? Puedes simplemente darte de baja. No voy a usar tu dirección de correo electrónico para nada más. No voy a venderla a dios sabe quién. No tiene sentido hacer eso con todas las fugas de data. Realmente no puedo competir con esas, aunque quisiera, y no quiero.

Entonces, ¿cuáles son los objetivos de esta masterclass? Bueno, vamos a echar un vistazo a los hooks. Vamos a saltarnos lo básico. Esta es una masterclass avanzada. Así que espero que todos estén familiarizados con React, familiarizados con los conceptos básicos de los hooks. Y vamos a ir más allá de eso. Vamos a ver cómo puedes equivocarte, porque incluso con los hooks simples, son bastante simples, pero aún puedes usarlos de la manera incorrecta y obtener un error o algún resultado no deseado o tal vez una degradación del rendimiento o algo así. Y luego vamos a ir más allá de los hooks básicos. ¿Cómo puedes usar los hooks más avanzados? ¿Cuándo querrías hacerlo? Y cuáles hay, por supuesto. No vamos a ver todos ellos, hay un par de casos bastante marginales, como el valor de uso debug. No vamos a usar eso, pero veremos la mayoría de ellos. Crearemos algunos hooks personalizados. Veremos las reglas de los hooks, por qué necesitas seguirlas, qué puede pasar si no lo haces, y cómo están realmente construidas. Parte de eso es que echaremos un vistazo detrás de las escenas a cómo funcionan las reglas de ESLint y cómo React realmente funciona bajo el capó con los hooks. Y luego, en la segunda parte de la masterclass, vamos a hacer un ejemplo más complejo. La primera parte son ejemplos bastante simples donde nos centramos en un hook a la vez. En la segunda parte, vamos a crear un poco de una biblioteca de UI o una biblioteca de formularios, tal vez estés familiarizado con formic, que es una biblioteca realmente agradable si quieres hacer formularios sobre data en React. Bueno, vamos a crear un clon simple, bastante, muy simplificado de eso. Ver cómo los hooks y el contexto y un par de diferentes características de React trabajarán juntos para crear una solución muy elegante para hacer algo así. Te proporcionaré todo el code que necesitas en el repositorio de Git, así que si quieres, puedes copiar todo. Pero te recomendaría que escribas tanto como puedas. Como hay algunos fragmentos más grandes donde también voy a copiarlo, porque no tiene sentido verme escribir 25 líneas de code con un montón de errores de tipeo. Pero en su mayoría, te recomendaría que lo escribas porque cometerás errores. Yo cometo errores. Todos lo hacen. Y los cometerás en la vida real también cuando no sea una masterclass. Y si los has cometido ahora, has visto qué sale mal. Puedes obtener ayuda. Entonces los reconocerás cuando ocurran en algún otro escenario. Así que ayudar a cometer errores es una excelente manera de descubrir cosas. Los requisitos previos para el code necesitarás Node y NPM y el repositorio de GitHub. Con Node y NPM, prácticamente espero que todos estén bien allí. Dado que este es un curso avanzado, y espero que todos estén familiarizados con React. Tengo Node 12.18, en realidad tengo una versión más nueva de NPM. ¿Qué es? Tengo NPM 7.11 aquí. En realidad tengo Node 14.15, a diferencia de lo que dice en mi diapositiva. Supongo que es un poco antiguo, un poco anticuado, pero una versión relativamente nueva de Node debería funcionar y una versión relativamente nueva de NPM, no necesita ser exactamente esta versión. Lo otro que necesitarás es el repositorio de GitHub. Ahora he pegado enlaces a él, tanto en Discord como en la ventana de chat de Zoom. Así que puedes llegar allí. También deberías haber recibido un correo electrónico con enlaces a él. Así que hay muchas formas de conseguirlo. Si tienes una copia de las diapositivas, que te recomiendo encarecidamente que tengas a mano porque hay muchos enlaces allí. Puedes hacer clic en el código QR aquí o en la imagen y te llevará directamente al repositorio, excepto que lo hace en mi otra pantalla. Así que aquí está. Básicamente, todo el código que vamos a escribir está aquí, hay un montón de ramas aquí. Cuando clones esto, simplemente déjalo en la rama principal para hacer la instalación de npm. Y después cambia a la rama de inicio cero cero. Esa es la que vamos a empezar, que no tiene todo el code que vamos a escribir. La rama principal está completa. Todas las demás ramas aquí están al final de un paso. Así que cero uno hook personalizado es después de que hemos hecho un hook personalizado, cero dos efectos de diseño es lo mismo, etc. Así que puedes ver que tenemos 14 pasos diferentes para pasar. ¿Eso es todo? Creo que sí. Todas las ramas aquí. Sí, 14 de ellas. Así que asegúrate de clonar eso y ejecutar NPM install en eso. Y eso no debería llevar mucho tiempo, pero obtendrás un montón de paquetes. Esto no se hace con create react app. Así que en realidad es un poco más pequeño que eso. Un poco de un experimento, pero estoy usando vita dos, o pies. Debería decir en realidad que así es como se pronuncia para construir y ejecutar la aplicación en modo de desarrollo. Tal vez has oído hablar de ello, tal vez no. Es una forma ligera de alojar aplicaciones o lo siento, desarrollar aplicaciones donde el servidor de desarrollo se inicia muy rápido. Utiliza módulos de ECMAScript para servir todo. Así que el code se compilará según sea necesario, pero no es como si todo tuviera que ser empaquetado con cada cambio. Así que los pasos de finalización son realmente pequeños y solo se compila según sea necesario, lo cual funciona realmente bien. No he usado esto en proyectos grandes todavía donde en realidad brilla aún más porque entonces el tiempo de inicio con create React se vuelve un poco lento. Pero los proyectos más pequeños en los que he usado esto, estaba realmente contento con ello. Así que lo usé para esta masterclass y funciona muy bien.

Read also

2. Introducción a React Hooks

Short description:

Bienvenidos a la masterclass sobre Consejos de React Hooks que solo los profesionales conocen. Esta es una masterclass avanzada donde exploraremos hooks más allá de lo básico. Cubriremos errores comunes, hooks avanzados, creación de hooks personalizados y las reglas de los hooks. En la segunda parte, crearemos un clon simplificado de una biblioteca de UI o formularios utilizando hooks y contexto. Asegúrate de tener Node, NPM y el repositorio de GitHub listo. Clona el repositorio, cambia a la rama de inicio y ejecuta NPM install. Utilizaremos vita o feet para desarrollar la aplicación de manera ligera y eficiente.

Y también lo recomendaría para otras cosas. Otra cosa que notarás con el code, todo el code está en TypeScript. Ahora, no todos son fanáticos de TypeScript, yo sí. No voy a disculparme por eso. Me gusta mucho TypeScript. Creo que es, bueno, una gran ventaja cuando estás haciendo aplicaciones serias. Con una pequeña aplicación de demostración o prueba de concepto, probablemente también usaría JavaScript solo para hacer las cosas rápidamente. Pero cualquier trabajo serio lo hago en TypeScript. Ahora, esta masterclass no es una aplicación seria, pero está destinada a ser realista aunque sea bastante pequeña. Así que decidí usar TypeScript. Ahora, si no estás acostumbrado a TypeScript, hay un archivo. Permíteme abrir primero Visual Studio Code, y mostrarte ¿dónde está? TS config aquí abajo. Esto controla cómo funciona TypeScript. Hay esta configuración aquí, strict es true. Eso significa que TypeScript hará muchas comprobaciones. Si realmente no quieres o tienes experiencia con TypeScript, puedes poner esto en false y entonces te molestará mucho menos. También está la palabra clave any. Puedes escribir cosas como any y deshacerte de muchas advertencias de compilación de esa manera también. Pero te recomendaría encarecidamente que te quedes con TypeScript y lo uses incluso en proyectos serios porque funciona muy bien. Otro par de enlaces al repositorio y estas diapositivas. Ese no es el punto de esta diapositiva. El punto es que verás muchas imágenes como esta donde tengo fragmentos de code, use person, function en este caso. Y si pasas el ratón por encima, notarás que en realidad es un enlace que se abre en mi otro monitor de nuevo. Entonces, el punto de este enlace y el code que aparece, es una diferencia de lo que estamos haciendo realmente en este paso. Entonces, en este paso, podemos ver que agregué a use ref aquí y cambié algo, etc., exactamente lo que eliminé, como eliminar algo de code aquí, cosas así. Útil si quieres hacer algo y no estás muy seguro de cuáles son los cambios. Hay algunos resaltados sutiles aquí donde puedes ver dónde se cambió el code, lo cual también ayudará, pero puedes abrir el code. Y por supuesto, si es un cambio más grande, siempre puedes entrar aquí y simplemente copiar cosas de aquí, lo cual haré ocasionalmente. También verás a este caballero. Jean-Luc Picard, el capitán del Enterprise. Y básicamente cada vez que lo veas aparecer, es una señal de que es tu turno de hacer algo. Entonces, básicamente, te voy a mostrar lo que vamos a hacer. Yo lo voy a hacer. Y luego, después de eso, es tu turno de hacer lo mismo. Por supuesto, te explicaré cómo y todo, cómo se supone que todo debe funcionar, etc. Pero durante esas partes interactivas donde estás codificando, voy a abrir las salas de Zoom. Voy a dividir, bueno, actualmente somos 23 personas. Así que voy a dividir eso en algo como siete, tal vez ocho salas, dependiendo del número real entonces. Así que habrá algo como tres a cuatro personas en una sala dada. Desafortunadamente, a veces en Zoom, las personas son expulsadas de una sala. En ese caso, te agregaré de nuevo. Pero normalmente no sé exactamente en qué sala estabas originalmente porque se crean al azar. Lo siento si saltas de una sala a otra como resultado de eso. No hay mucho que pueda hacer al respecto. Esa es la parte de la introducción.

QnA

Watch more workshops on topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Next.js para Desarrolladores de React.js
React Day Berlin 2023React Day Berlin 2023
157 min
Next.js para Desarrolladores de React.js
Top Content
Featured WorkshopFree
Adrian Hajdin
Adrian Hajdin
En esta avanzada masterclass de Next.js, profundizaremos en conceptos clave y técnicas que permiten a los desarrolladores de React.js aprovechar al máximo Next.js. Exploraremos temas avanzados y prácticas prácticas, equipándote con las habilidades necesarias para construir aplicaciones web de alto rendimiento y tomar decisiones arquitectónicas informadas.
Al final de esta masterclass, serás capaz de:1. Comprender los beneficios de los Componentes del Servidor React y su papel en la construcción de aplicaciones React interactivas, renderizadas por el servidor.2. Diferenciar entre el tiempo de ejecución de Edge y Node.js en Next.js y saber cuándo usar cada uno en función de los requisitos de tu proyecto.3. Explorar técnicas avanzadas de Renderizado del Lado del Servidor (SSR), incluyendo streaming, fetching paralelo vs. secuencial, y sincronización de datos.4. Implementar estrategias de caché para mejorar el rendimiento y reducir la carga del servidor en las aplicaciones Next.js.5. Utilizar Acciones React para manejar la mutación compleja del servidor.6. Optimizar tus aplicaciones Next.js para SEO, compartir en redes sociales, y rendimiento general para mejorar la descubrabilidad y la participación del usuario.
Aventuras de Renderizado Concurrente en React 18
React Advanced 2021React Advanced 2021
132 min
Aventuras de Renderizado Concurrente en React 18
Top Content
Featured WorkshopFree
Maurice de Beijer
Maurice de Beijer
Con el lanzamiento de React 18 finalmente obtenemos el tan esperado renderizado concurrente. Pero, ¿cómo va a afectar eso a tu aplicación? ¿Cuáles son los beneficios del renderizado concurrente en React? ¿Qué necesitas hacer para cambiar al renderizado concurrente cuando actualices a React 18? ¿Y qué pasa si no quieres o no puedes usar el renderizado concurrente todavía?

¡Hay algunos cambios de comportamiento de los que debes estar al tanto! En esta masterclass cubriremos todos esos temas y más.

Acompáñame con tu portátil en esta masterclass interactiva. Verás lo fácil que es cambiar al renderizado concurrente en tu aplicación React. Aprenderás todo sobre el renderizado concurrente, SuspenseList, la API startTransition y más.
Presentando FlashList: Construyamos juntos una lista performante en React Native
React Advanced 2022React Advanced 2022
81 min
Presentando FlashList: Construyamos juntos una lista performante en React Native
Top Content
Featured Workshop
David Cortés Fulla
Marek Fořt
Talha Naqvi
3 authors
En esta masterclass aprenderás por qué creamos FlashList en Shopify y cómo puedes usarlo en tu código hoy. Te mostraremos cómo tomar una lista que no es performante en FlatList y hacerla performante usando FlashList con mínimo esfuerzo. Usaremos herramientas como Flipper, nuestro propio código de benchmarking, y te enseñaremos cómo la API de FlashList puede cubrir casos de uso más complejos y aún así mantener un rendimiento de primera categoría.Sabrás:- Breve presentación sobre qué es FlashList, por qué lo construimos, etc.- Migrando de FlatList a FlashList- Enseñando cómo escribir una lista performante- Utilizando las herramientas proporcionadas por la biblioteca FlashList (principalmente el hook useBenchmark)- Usando los plugins de Flipper (gráfico de llamas, nuestro perfilador de listas, perfilador de UI & JS FPS, etc.)- Optimizando el rendimiento de FlashList utilizando props más avanzados como `getType`- 5-6 tareas de muestra donde descubriremos y solucionaremos problemas juntos- Preguntas y respuestas con el equipo de Shopify
React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Masterclass Web3 - Construyendo Tu Primer Dapp
React Advanced 2021React Advanced 2021
145 min
Masterclass Web3 - Construyendo Tu Primer Dapp
Top Content
Featured WorkshopFree
Nader Dabit
Nader Dabit
En esta masterclass, aprenderás cómo construir tu primer dapp de pila completa en la blockchain de Ethereum, leyendo y escribiendo datos en la red, y conectando una aplicación de front end al contrato que has desplegado. Al final de la masterclass, entenderás cómo configurar un entorno de desarrollo de pila completa, ejecutar un nodo local e interactuar con cualquier contrato inteligente usando React, HardHat y Ethers.js.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Una Guía del Comportamiento de Renderizado de React
React Advanced 2022React Advanced 2022
25 min
Una Guía del Comportamiento de Renderizado de React
Top Content
This transcription provides a brief guide to React rendering behavior. It explains the process of rendering, comparing new and old elements, and the importance of pure rendering without side effects. It also covers topics such as batching and double rendering, optimizing rendering and using context and Redux in React. Overall, it offers valuable insights for developers looking to understand and optimize React rendering.
Construyendo Mejores Sitios Web con Remix
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Construyendo Mejores Sitios Web con Remix
Top Content
Remix is a web framework built on React Router that focuses on web fundamentals, accessibility, performance, and flexibility. It delivers real HTML and SEO benefits, and allows for automatic updating of meta tags and styles. It provides features like login functionality, session management, and error handling. Remix is a server-rendered framework that can enhance sites with JavaScript but doesn't require it for basic functionality. It aims to create quality HTML-driven documents and is flexible for use with different web technologies and stacks.
No resuelvas problemas, elimínalos
React Advanced 2021React Advanced 2021
39 min
No resuelvas problemas, elimínalos
Top Content
Kent C. Dodds discusses the concept of problem elimination rather than just problem-solving. He introduces the idea of a problem tree and the importance of avoiding creating solutions prematurely. Kent uses examples like Tesla's electric engine and Remix framework to illustrate the benefits of problem elimination. He emphasizes the value of trade-offs and taking the easier path, as well as the need to constantly re-evaluate and change approaches to eliminate problems.
Compilador React Forget - Entendiendo React Idiomático
React Advanced 2023React Advanced 2023
33 min
Compilador React Forget - Entendiendo React Idiomático
Top Content
Joe Savona
Mofei Zhang
2 authors
The Talk discusses React Forget, a compiler built at Meta that aims to optimize client-side React development. It explores the use of memoization to improve performance and the vision of Forget to automatically determine dependencies at build time. Forget is named with an F-word pun and has the potential to optimize server builds and enable dead code elimination. The team plans to make Forget open-source and is focused on ensuring its quality before release.
Uso efectivo de useEffect
React Advanced 2022React Advanced 2022
30 min
Uso efectivo de useEffect
Top Content
Today's Talk explores the use of the useEffect hook in React development, covering topics such as fetching data, handling race conditions and cleanup, and optimizing performance. It also discusses the correct use of useEffect in React 18, the distinction between Activity Effects and Action Effects, and the potential misuse of useEffect. The Talk highlights the benefits of using useQuery or SWR for data fetching, the problems with using useEffect for initializing global singletons, and the use of state machines for handling effects. The speaker also recommends exploring the beta React docs and using tools like the stately.ai editor for visualizing state machines.
Enrutamiento en React 18 y más allá
React Summit 2022React Summit 2022
20 min
Enrutamiento en React 18 y más allá
Top Content
Routing in React 18 brings a native app-like user experience and allows applications to transition between different environments. React Router and Next.js have different approaches to routing, with React Router using component-based routing and Next.js using file system-based routing. React server components provide the primitives to address the disadvantages of multipage applications while maintaining the same user experience. Improving navigation and routing in React involves including loading UI, pre-rendering parts of the screen, and using server components for more performant experiences. Next.js and Remix are moving towards a converging solution by combining component-based routing with file system routing.