Mejorando Formularios con React Server Components

Rate this content
Bookmark
Github

En esta charla, exploramos la aplicación de React Server Components (RSC) para elevar la funcionalidad y eficiencia de los formularios. Tocaremos los principios básicos de RSC y sus beneficios específicos para el desarrollo de formularios, como tiempos de carga mejorados y procesamiento del lado del servidor simplificado. Además, aprenderemos los últimos avances en React 19 y la introducción de múltiples nuevos hooks. Los asistentes obtendrán información sobre estrategias prácticas para integrar RSC en formularios, centrándose en mejorar la experiencia del usuario y reducir las complejidades del front-end.

This talk has been presented at React Day Berlin 2024, check out the latest edition of this React Conference.

Aurora Scharff
Aurora Scharff
27 min
13 Dec, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Mi nombre es Aurora, una desarrolladora web de Noruega, demostrando un ejemplo práctico de trabajo con formularios y componentes del servidor usando React 19. La función del servidor se crea usando la directiva `useServer` y permite que las funciones sean invocables desde el cliente. El envío y la validación del formulario se manejan del lado del servidor usando Prisma y un esquema de mensajes con Zod. El hook useActionState se utiliza para la lógica del lado del servidor y la actualización del estado del cliente. JavaScript del lado del cliente se utiliza para el comportamiento del formulario y prevenir el reinicio del formulario. El formulario se mejora progresivamente y puede manejar múltiples envíos con retroalimentación al usuario. La charla también enfatiza la reutilización del patrón pendiente y la creación de componentes personalizados del cliente. Las actualizaciones optimistas se implementan usando el hook useOptimistic. React 19 y los componentes del servidor ofrecen una nueva opción para crear formularios robustos. El uso de notaciones de servidor y cliente en servicios de producción debe hacerse con precaución debido a la posible fuga de datos. Los endpoints y las funciones del servidor deben manejarse de manera segura. Otras bibliotecas como Conform y Vest.js ofrecen opciones para optimizar formularios con React 19.

1. Part 1: Introduction and Setup

Short description:

Mi nombre es Aurora. Soy desarrolladora web de Noruega. Trabajo como consultora en Oslo y construyo activamente con componentes de React en mi proyecto. Estoy emocionada de demostrar un ejemplo práctico de trabajo con formularios y componentes de servidor. La configuración utiliza Prisma como ORM, una base de datos local y Tailwind para CSS. Todos los componentes son componentes de servidor por defecto y pueden hacerse asíncronos. El formulario actualmente no es funcional, pero lo mejoraremos usando React 19 para hacerlo interactivo mientras minimizamos JS en el cliente. React 19 fue lanzado recientemente después de estar en RC durante medio año.

Mi nombre es Aurora. Soy desarrolladora web de Noruega, y trabajo como consultora en Oslo, y estoy construyendo activamente con componentes de React en mi proyecto, y ahí es donde trato de obtener mi conocimiento y hacer algunos ejemplos para ayudar a enseñar a otras personas sobre eso.

¿Cuántas personas usan componentes de servidor de React aquí? Bien, bastantes. Wow, eso es bueno, eso es bueno. Genial.

Estoy emocionada de estar demostrando un ejemplo práctico de trabajo con formularios y componentes de servidor aquí hoy, y voy a codificar algo que está basado o inspirado en una característica que construí en mi proyecto actual. Así que vamos directo a ello.

Así que la configuración aquí es un curso de enrutador de XGS, y está usando Prisma como un ORM y una base de datos local y Tailwind para CSS. Soy una gran fan de Tailwind. Y vamos a revisar los archivos iniciales aquí.

Así que como estamos en el enrutador de la aplicación, todo es un componente de servidor por defecto, ¿verdad? Y eso significa que todos estos componentes aquí son, wow, okay, son componentes de servidor por defecto. Y eso significa que realmente puedo hacerlos asíncronos. Así que los componentes de servidor pueden ser asíncronos, y realmente puedo obtener datos de forma asíncrona justo dentro del propio componente.

Y aquí tengo un cuadro de mensajes, y está obteniendo mensajes de la base de datos directamente a través de Prisma. Y luego también hay un componente de visualización de mensajes aquí, o estoy mapeando los mensajes a componentes de visualización de mensajes. Y aquí, todo lo que necesitamos hacer es simplemente estilizar basado en si el mensaje está escrito por el usuario. Así que solo un componente de servidor, nada especial aquí.

Y también hay una entrada de mensaje, y ese es este formulario aquí, y no hace nada ahora mismo. Es solo un formulario con una sola entrada, y lo probaré aquí. Así que no va a pasar nada.

Así que todo esto es componente de servidor, lo que significa que no hay JS añadido al paquete del cliente para ninguno de estos componentes. Y vamos a mejorar esto con React 19. El objetivo será hacer esto interactivo, mientras minimizamos el JS en el cliente y reducimos la complejidad del front-end. Y comencemos simplemente haciendo que el formulario funcione. Así que voy a usar la extensión de React 19 del elemento de formulario para vincular la propiedad de acción a una función. Esto es algo que podemos hacer con React 19 ahora.

Y React 19 fue lanzado como la semana pasada, hace dos semanas, finalmente, después de estar en RC por como medio año. Así que, whoo. Sí, eso es agradable. Sí.

2. Part 2: Creating the Server Function

Short description:

Podemos vincular a una función aquí. Voy a crear una función de servidor usando la directiva de React 19, use server. Cada función en este archivo será invocable como código de servidor, pero invocable desde el cliente. Exportaremos una función asíncrona, submit message, que toma un objeto de datos de formulario. Cada campo en este formulario se enviará con su valor dentro del objeto de datos de formulario. Usaremos esto para insertar en la base de datos usando Prisma. También necesitamos un created by ID, que puede pasarse como un argumento adicional a la función de servidor. Podemos usar dot bind o una entrada oculta para lograr esto. Es importante notar que pasar el user ID desde el lado del cliente no se recomienda sin una configuración adecuada de autenticación del lado del servidor.

De todos modos, podemos vincular a una función aquí. Así que voy a vincular a submit message y voy a crear una función de servidor. Así que lo haré aquí en mi capa de acceso a datos. Solo diré submit message TS. Y como voy a hacer una función de servidor, usaré la directiva de React 19, use server. Y lo que esto significa es que cada función en este archivo será invocable como código de servidor, pero invocable desde el cliente. Y tendremos un endpoint de API oculto generado automáticamente. Así que vamos a exportar una función asíncrona aquí, que es submit message, si puedo deletrear función. Eso es algo bueno si puedo hacer una función. Ahí vamos. Y esto tomará un objeto de datos de formulario de tipo form data. Y lo que esto significa es que cada campo en este formulario se enviará con su valor dentro del objeto de datos de formulario. Y podemos usar esto para simplemente insertar en la base de datos usando Prisma, crear un mensaje donde los datos serán el contenido aquí. Solo lo obtendré de los datos del formulario. Lo tipificaremos como una cadena por ahora. Y también necesito un created by ID aquí. Y eso significa que de alguna manera necesito pasar un argumento adicional a esta función de servidor. Y hay un par de maneras en que podemos hacer esto. Podemos hacer como un dot bind. Esa es una manera. O podemos usar una entrada oculta. Así que aquí voy a usar una entrada oculta, vincularla al user ID, y puedo simplemente importar esta función de servidor aquí. Y ahora puedo obtener esto de los datos del formulario. Ahí vamos. Y tratemos de concluir esto aquí. Y tengo que añadir un poco de un descargo de responsabilidad aquí porque realmente no quieres pasar el user ID desde el lado del cliente. Eso es solo un ejemplo de cómo puedes pasar parámetros adicionales cuando te encuentras con eso. Así que querrías algún tipo de configuración de autenticación del lado del servidor. Pero esto está bien por ahora. Así que probémoslo.

QnA

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

Estudio de caso: Construcción de componentes React reutilizables accesibles en GitHub
React Summit 2024React Summit 2024
29 min
Estudio de caso: Construcción de componentes React reutilizables accesibles en GitHub
The talk discusses building accessible React components and emphasizes the importance of using the correct HTML elements and ARIA roles for accessibility. It explains how to navigate and select options within a form and how to add supplementary text using Aria described by. The speaker also discusses the benefits of using conditional checkboxes and ARIA disabled to improve the UI. Additionally, the talk explores the role of JavaScript in web accessibility and provides recommendations for testing website accessibility.
React Server Components en Aplicaciones de IA
React Advanced 2024React Advanced 2024
17 min
React Server Components en Aplicaciones de IA
Today we will discuss React server components with AI and how to build a better search experience using them. We will learn how to make a Next.js app AI-enabled using the Vercel AI SDK. The Vercel AI SDK's streamUI function with the GPT 4.0 model will be used to make suggestions interactive. We will explore the use of history and conversation in AI and how to continue the conversation and read the result. The concept of generative UI with the vector database will be introduced, along with querying the database for movies. We will process user queries and return movies based on them. The power of React server components in enhancing UI will be demonstrated. In summary, the Talk covers vector embeddings, natural language search, and generative UI.
Composición vs Configuración: Cómo Construir Componentes Flexibles, Resilientes y a Prueba de Futuro
React Summit 2022React Summit 2022
17 min
Composición vs Configuración: Cómo Construir Componentes Flexibles, Resilientes y a Prueba de Futuro
Top Content
Today's Talk discusses building flexible, resilient, and future-proof React components using composition and configuration approaches. The composition approach allows for flexibility without excessive conditional logic by using multiple components and passing props. The context API can be used for variant styling, allowing for appropriate styling and class specification. Adding variants and icons is made easy by consuming the variant context. The composition and configuration approaches can be combined for the best of both worlds.
El componente de React más caro del mundo y cómo dejar de escribirlo
React Advanced 2021React Advanced 2021
23 min
El componente de React más caro del mundo y cómo dejar de escribirlo
Top Content
Today's Talk discusses expensive React components and API design, with a focus on the cost of coordination and overcoming imposter syndrome. The speaker shares a story about a cat trying to fix salted coffee, highlighting the importance of finding simple solutions. The billion dollar component on ReactJS.org is examined as an example of an expensive component. Techniques for customizing messages, improving accessibility, and using polymorphic props are discussed. The Talk concludes by emphasizing the cost of communication and the need to evaluate if props and components are the right tools for the job.
Descubre si tu sistema de diseño es mejor que nada
React Summit 2022React Summit 2022
20 min
Descubre si tu sistema de diseño es mejor que nada
Building a design system without adoption is a waste of time. Grafana UI's adoption is growing consistently over time. The factors affecting design system adoption include the source mix changing, displacement of Homebrew components by Grafana UI, and the limitations of Grafana UI's current state. Measuring adoption is important to determine the success of a design system. The analysis of code through static code analysis tools is valuable in detecting and tracking component usage.
Cómo lograr la composición de diseño en React
React Summit 2022React Summit 2022
8 min
Cómo lograr la composición de diseño en React
This talk discusses achieving layout composition in React using Bedrock Layout Primitives. By componentizing CSS layout, complex layouts can be achieved and reused across different components. The talk also covers the challenges of achieving complex layouts, such as card lineups, and provides solutions for maintaining alignment and responsiveness. The BedrockLayout primitive library simplifies web layouts and offers flexibility in composing layouts.

Workshops on related topic

Práctica con la Rejilla de Datos React de AG Grid
React Summit 2022React Summit 2022
147 min
Práctica con la Rejilla de Datos React de AG Grid
Top Content
WorkshopFree
Sean Landsman
Sean Landsman
Comienza con la Rejilla de Datos React de AG Grid con un tutorial práctico del equipo central que te llevará a través de los pasos para crear tu primera rejilla, incluyendo cómo configurar la rejilla con propiedades simples y componentes personalizados. La edición comunitaria de AG Grid es completamente gratuita para usar en aplicaciones comerciales, por lo que aprenderás una herramienta poderosa que puedes agregar inmediatamente a tus proyectos. También descubrirás cómo cargar datos en la rejilla y diferentes formas de agregar renderizado personalizado a la rejilla. Al final de la masterclass, habrás creado una Rejilla de Datos React de AG Grid y personalizado con componentes React funcionales.- Comenzando e instalando AG Grid- Configurando ordenación, filtrado, paginación- Cargando datos en la rejilla- La API de la rejilla- Usando hooks y componentes funcionales con AG Grid- Capacidades de la edición comunitaria gratuita de AG Grid- Personalizando la rejilla con Componentes React
Practica Técnicas de TypeScript Construyendo una Aplicación con Componentes de Servidor React
TypeScript Congress 2023TypeScript Congress 2023
131 min
Practica Técnicas de TypeScript Construyendo una Aplicación con Componentes de Servidor React
Workshop
Maurice de Beijer
Maurice de Beijer
En esta masterclass práctica, Maurice te guiará personalmente a través de una serie de ejercicios diseñados para empoderarte con una profunda comprensión de los Componentes de Servidor React y el poder de TypeScript. Descubre cómo optimizar tus aplicaciones, mejorar el rendimiento y desbloquear nuevas posibilidades.
 
Durante la masterclass, realizarás:
- Maximizar la mantenibilidad y escalabilidad del código con prácticas avanzadas de TypeScript
- Desatar los beneficios de rendimiento de los Componentes de Servidor React, superando enfoques tradicionales
- Potenciar tu TypeScript con el poder de los Tipos Mapeados
- Hacer tus tipos TypeScript más seguros con Tipos Opacos
- Explorar el poder de los Tipos de Plantillas Literales al usar Tipos Mapeados
 
Maurice estará virtualmente a tu lado, ofreciendo una guía completa y respondiendo a tus preguntas mientras navegas por cada ejercicio. Al final de la masterclass, habrás dominado los Componentes de Servidor React, armado con un nuevo arsenal de conocimientos de TypeScript para potenciar tus aplicaciones React.
 
No pierdas esta oportunidad de elevar tu experiencia en React a nuevas alturas. Únete a nuestra masterclass y desbloquea el potencial de los Componentes de Servidor React con TypeScript. Tus aplicaciones te lo agradecerán.
De la Idea a la Producción: Desarrollo de React con un Toque Visual
React Summit 2023React Summit 2023
31 min
De la Idea a la Producción: Desarrollo de React con un Toque Visual
WorkshopFree
Omer Kenet
Omer Kenet
Únete a nosotros para un masterclass de 3 horas que explora el mundo del desarrollo creativo de React utilizando Codux. Los participantes explorarán cómo un enfoque visual puede desbloquear la creatividad, agilizar los flujos de trabajo y mejorar la velocidad de desarrollo. Sumérgete en las características que hacen de Codux un cambio de juego para los desarrolladores de React. La sesión incluirá ejercicios prácticos que demuestran el poder de la renderización en tiempo real, la manipulación visual del código y el aislamiento de componentes, todo en tu código fuente.
Tabla de contenidos:- Descarga e instalación: Preparando Codux para el masterclass- Selector de proyectos: Clonación e instalación de un proyecto de demostración- Introducción a los conceptos principales de Codux y su interfaz de usuario- Ejercicio 1: Encontrando nuestro camino- Descanso- Ejercicio 2: Realizando cambios de manera efectiva- Ejercicio 3: Reutilización y validación de casos especiales- Resumen, Cierre y Preguntas y Respuestas
Curso intensivo de TypeScript para contenido de un CMS sin cabeza
React Summit 2022React Summit 2022
98 min
Curso intensivo de TypeScript para contenido de un CMS sin cabeza
WorkshopFree
Ondrej Polesny
Ondrej Polesny
En este masterclass, primero te mostraré cómo crear un nuevo proyecto en un CMS sin cabeza, llenarlo con datos y usar el contenido en tu proyecto. Luego, pasaremos el resto del tiempo en código, haremos lo siguiente:- Generar modelos y estructuras de tipo fuertemente tipados para el contenido obtenido.- Usar el contenido en componentes- Resolver contenido de campos de texto enriquecido en componentes de React- Tocar los pipelines de implementación y las posibilidades de descubrir problemas relacionados con el contenido antes de llegar a producción
Aprenderás:- Cómo trabajar con contenido de un CMS sin cabeza- Cómo se puede aprovechar el modelo de contenido para generar tipos en TypeScript y qué beneficios aporta a tu proyecto- Cómo dejar de usar literales de cadena para el contenido en el código- Cómo resolver texto enriquecido en componentes de React- Cómo minimizar o evitar problemas relacionados con el contenido antes de llegar a producción