Composición vs Configuración: Cómo Construir Componentes Flexibles, Resilientes y a Prueba de Futuro

Rate this content
Bookmark

Existen muchas formas de autorizar componentes en React, y hacerlo correctamente puede no ser tan fácil, especialmente cuando los componentes se vuelven más complejos. En esta charla, aprenderás cómo construir componentes React a prueba de futuro. Cubriremos dos enfoques diferentes para construir componentes - Composición y Configuración, para construir el mismo componente utilizando ambos enfoques y explorar sus ventajas y desventajas.

FAQ

Tomasz Findly es un desarrollador web y móvil full-stack con 10 años de experiencia en programación. Es co-propietario de Findly WebTech, mentor y consultor en CodeMentor.io, y autor de varios libros sobre React.

Los dos enfoques principales para construir componentes en React que menciona Tomasz son la composición y la configuración.

El enfoque de configuración puede hacer que el código sea difícil de mantener y extender debido a la necesidad de agregar más props y lógica condicional a medida que se incorporan nuevas funcionalidades y variantes.

Para aumentar la flexibilidad de un componente de alerta en React, se pueden agregar props adicionales como encabezado, variante e ícono, y usar la API de contexto para gestionar estilos y variantes en diversos componentes.

El enfoque de composición consiste en usar bloques de construcción modulares para armar la funcionalidad del componente. Ofrece alta flexibilidad y facilita la extensión de funcionalidades sin necesidad de sobrescribir componentes.

Las desventajas incluyen la necesidad de mayor conocimiento sobre cómo funcionan y se componen los bloques de construcción, junto con un mayor esfuerzo y tiempo para configurar los componentes. Además, puede ser más fácil desviarse del diseño sistemático y generar inconsistencias en la UI.

Se pueden combinar los enfoques utilizando primero la composición para crear los bloques básicos y después usar estos bloques para configurar componentes más complejos. Esto permite mantener la flexibilidad mientras se simplifica la utilización de componentes.

Thomas Findlay
Thomas Findlay
17 min
21 Jun, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla de hoy discute la construcción de componentes React flexibles, resilientes y a prueba de futuro utilizando enfoques de composición y configuración. El enfoque de composición permite flexibilidad sin lógica condicional excesiva mediante el uso de múltiples componentes y el paso de props. La API de contexto se puede utilizar para el estilo de variantes, permitiendo un estilo y especificación de clase apropiados. Agregar variantes e iconos se facilita al consumir el contexto de variantes. Los enfoques de composición y configuración se pueden combinar para lo mejor de ambos mundos.

1. Construyendo Componentes React Flexibles y Resilientes

Short description:

Hoy, discutiré cómo construir componentes flexibles, resilientes y a prueba de futuro en React. Exploraremos dos enfoques: composición y configuración. Construir componentes a prueba de futuro puede ser un desafío a medida que la complejidad crece. Agregar características como encabezados, variantes e iconos requiere una cuidadosa consideración de las props y los estilos.

Hey, hoy voy a hablar sobre cómo construir componentes flexibles, resilientes y a prueba de futuro en React. Voy a cubrir dos enfoques diferentes para construir componentes, composición y configuración. Pero primero, permíteme contarte un poco sobre mí. Mi nombre es Tomasz Findly y soy un desarrollador web y móvil full-stack con 10 años de experiencia en programación. Soy co-propietario de Findly WebTech, así como mentor y consultor en la plataforma CodeMentor.io. Además de eso, soy el autor de React, el Camino a Enterprise y Viewed el Camino a Enterprise libros. También escribo artículos para Telerik y los blogs de Camino a Enterprise. Bueno, eso es suficiente sobre mí. Ahora, los componentes. Entonces, seamos honestos. Construir componentes a prueba de futuro no es fácil. Quiero decir, bueno, si tienes un componente como este, es muy simple. Así que para este ejemplo, usaré un componente de alerta. Entonces, por ejemplo, si quisieras tener un componente de alerta que mostrara un mensaje de alerta básico, bueno, podríamos hacer algo como esto, ¿verdad? Podríamos recibir entradas de texto como props, tener algunos divs con estilos, y luego renderizar lo que se pasó, ¿verdad? Y así es como podríamos usarlo. Solo usa el componente de alerta y pasa el mensaje de texto dentro de él. Entonces, obviamente, eso es muy simple, pero el problema con la construcción de buenos componentes es que, a medida que necesitamos agregar más funcionalidad, la complejidad simplemente crece, ¿verdad? El code se está volviendo mucho más difícil de mantener y extender. Entonces, ¿qué pasaría si quisiéramos agregar más características a este componente de alerta? Digamos que solo queremos agregar un encabezado también. Entonces podríamos recibir un encabezado como una prop, y si se pasó uno, lo mostraríamos, ¿verdad? Como se muestra aquí en el ejemplo. Entonces, por ejemplo, en el lado derecho, tenemos una alerta solo con y la otra con tanto el encabezado de la alerta como el mensaje de texto. Así que eso sigue siendo bastante simple. Ahora, ¿qué pasa con las variantes? Bueno, supongo que podríamos agregar otra prop, como variante, ¿verdad? Y luego, en función de esa prop, y cualquiera que fuera la variante seleccionada, podríamos agregar estilos apropiados. Entonces, por ejemplo, podríamos admitir variantes como éxito, peligro, advertencia o información, como puedes ver en el lado derecho. Y así es como lo usaríamos. Solo pasa las props de encabezado y variante y algo de texto dentro.

Entonces, ¿qué pasa si agregamos, tal vez, un ícono? Bueno, de nuevo, otra prop, como ícono. Si se pasó, y encontramos un ícono compatible, entonces podemos renderizarlo. Simple, ¿no es así? Y así es como podríamos usarlo. Entonces, básicamente, por defecto, el ícono podría mostrarse a la izquierda Pero, ¿qué pasa si queremos especificar en qué lado queremos que se muestre? ¿Como, tal vez no a la izquierda, sino a la derecha? Bueno, ¿adivina qué? ¡Otra prop! Entonces, por ejemplo, podríamos pasar una prop como posición del ícono, ¿verdad? Por defecto podríamos establecerlo a la izquierda. Y luego, si, por ejemplo, era a la derecha, podríamos especificar algunas clases, ¿verdad?, que se agregarían en el contenedor de alerta. Ten en cuenta que estoy usando Tailwind aquí para las clases.

2. Usando la Composición para Flexibilidad

Short description:

El enfoque de configuración puede volverse problemático cuando agregar más funcionalidad requiere agregar más props y lógica condicional. Se vuelve más difícil extender o sobrescribir la lógica del componente. Por otro lado, la composición ofrece un enfoque diferente. Al usar múltiples componentes y pasar props, podemos lograr flexibilidad sin una lógica condicional excesiva. En el ejemplo, el componente de alerta se compone de los componentes de envoltura de alerta, contenido de alerta y cuerpo de alerta, lo que permite un mayor control y una extensión más fácil.

Y sí, así es como lo usaríamos, solo más props. Entonces, ese fue el enfoque de configuración, ¿verdad? Básicamente, cada vez que necesitamos agregar más funcionalidad, agregamos más props. Pero, bueno, eso puede ser problemático en algún momento. Porque lo que pasa es que, para cada nueva variante y funcionalidad, necesitamos agregar más y más props y lógica condicional, ¿verdad?

Y a veces puede ser mucho más difícil sobrescribir la lógica ya definida dentro de un componente o incluso extenderlo. Entonces, eso no es realmente lo mejor. El enfoque de configuración lo hace mucho más difícil. Entonces, a veces, si un componente no puede ser extendido, podríamos necesitar construir una nueva versión de él. Bueno, en cuanto a las ventajas, obviamente un enfoque de configuración, bueno, un componente construido con un enfoque de configuración es rápido y fácil de usar, ¿verdad? Porque solo necesitas saber qué props están realmente disponibles y qué necesitas proporcionar. Entonces, sí. Básicamente, diferentes funcionalidades y variantes visuales pueden ser controladas a través de props y eso es todo. Y otro beneficio de eso es que es mucho más difícil desviarse del sistema de design, ¿verdad? Porque lo que pasa es que solo puedes proporcionar props y eso es todo. No puedes hacer realmente nada más con él. Entonces, bueno, esto mantiene la UI y el comportamiento consistentes.

Pero, sí, como mencioné, el problema es que no podemos extender fácilmente el componente de construcción de configuración o sobrescribirlo. Entonces, ¿qué podemos hacer? Bueno, quiero decir que obviamente podríamos proporcionar tal vez props como, digamos, un render icon, render header, ya sabes, render body y así sucesivamente. Pero de nuevo, más props serían solo más desordenados. Entonces, habría más lógica condicional dentro del componente de alerta. Entonces, en lugar de intentar configurar todo, ¿qué tal si usamos un enfoque diferente, la composición. Entonces, en este ejemplo, tenemos tres componentes. Primero, el envoltorio de alerta, luego el contenido de alerta y el cuerpo de alerta. Y al cuerpo de alerta, le pasamos el mensaje de texto. Sé que tres componentes solo para el mensaje de texto es un poco mucho, pero quédate conmigo. Entonces, ¿cómo podría verse? Básicamente, el componente de alerta, obviamente, recibiría algunas props. Luego renderizaría un div con estilos apropiados y children, ¿verdad? Entonces, en este caso, los children serían el contenido de alerta y el cuerpo de alerta. Luego tenemos el contenido de alerta. Como ves, es muy similar al componente de alerta. Porque, de nuevo, solo recibe las props. Y tiene un div con algunos estilos. Y en realidad, bueno, lo mismo se aplicaría al cuerpo de alerta. Sé que hay un poco de repetición,

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

Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
¿Tienes un producto grande construido por muchos equipos? ¿Estás luchando para lanzar a menudo? ¿Se convirtió tu frontend en un monolito inmantenible masivo? Si, como yo, has respondido sí a cualquiera de esas preguntas, ¡esta charla es para ti! Te mostraré exactamente cómo puedes construir una arquitectura de micro frontend con Remix para resolver esos desafíos.
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced Conference 2021React Advanced Conference 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
Los sistemas de diseño buscan aportar consistencia al diseño de una marca y hacer que el desarrollo de la interfaz de usuario sea productivo. Las bibliotecas de componentes con una API bien pensada pueden facilitar esto. Pero, ¡a veces una elección de API puede accidentalmente sobrepasar y ralentizar al equipo! Hay un equilibrio allí... en algún lugar. Exploremos algunos de los problemas y posibles soluciones creativas.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
Remix es un marco de trabajo web que te ofrece el modelo mental simple de una aplicación de múltiples páginas (MPA) pero el poder y las capacidades de una aplicación de una sola página (SPA). Uno de los grandes desafíos de las SPA es la gestión de la red que resulta en una gran cantidad de indirecciones y código defectuoso. Esto es especialmente notable en el estado de la aplicación que Remix elimina por completo, pero también es un problema en los componentes individuales que se comunican con un punto final de backend de un solo propósito (como una búsqueda de combobox, por ejemplo).
En esta charla, Kent demostrará cómo Remix te permite construir componentes de interfaz de usuario complejos que están conectados a un backend de la manera más simple y poderosa que hayas visto. Dejándote tiempo para relajarte con tu familia o lo que sea que hagas para divertirte.
Entendiendo la Arquitectura Fiber de React
React Advanced Conference 2022React Advanced Conference 2022
29 min
Entendiendo la Arquitectura Fiber de React
Top Content
Hemos escuchado mucho sobre la Arquitectura Fiber de React, pero parece que pocos de nosotros la entendemos en profundidad (o tenemos el tiempo para hacerlo). En esta charla, Tejas repasará su mejor intento de entender Fiber (revisado por otros expertos), y lo presentará de una manera 'explicar-como-si-tuviera-cinco años'.
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Node Congress 2022Node Congress 2022
34 min
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Top Content
Puedes revisar las diapositivas de la charla de James aquí.
The Eternal Sunshine of the Zero Build Pipeline
React Finland 2021React Finland 2021
36 min
The Eternal Sunshine of the Zero Build Pipeline
For many years, we have migrated all our devtools to Node.js for the sake of simplicity: a common language (JS/TS), a large ecosystem (NPM), and a powerful engine. In the meantime, we moved a lot of computation tasks to the client-side thanks to PWA and JavaScript Hegemony.
So we made Webapps for years, developing with awesome reactive frameworks and bundling a lot of dependencies. We progressively moved from our simplicity to complex apps toolchains. We've become the new Java-like ecosystem. It sucks.
It's 2021, we've got a lot of new technologies to sustain our Users eXperience. It's time to have a break and rethink our tools rather than going faster and faster in the same direction. It's time to redesign the Developer eXperience. It's time for a bundle-free dev environment. It's time to embrace a new frontend building philosophy, still with our lovely JavaScript.
Introducing Snowpack, Vite, Astro, and other Bare Modules tools concepts!

Workshops on related topic

IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
Construye un Tablero Rico en Datos y Hermoso con la Rejilla de Datos de MUI X y Joy UI
React Summit 2023React Summit 2023
137 min
Construye un Tablero Rico en Datos y Hermoso con la Rejilla de Datos de MUI X y Joy UI
Top Content
WorkshopFree
Sam Sycamore
Siriwat (Jun) Kunaporn
2 authors
Aprende cómo utilizar el ecosistema completo de MUI para construir un tablero de gestión de proyectos hermoso y sofisticado en una fracción del tiempo que tomaría construirlo desde cero. En particular, veremos cómo integrar la Rejilla de Datos de MUI X con Joy UI, nuestra biblioteca de componentes más nueva y hermana del estándar de la industria Material UI.
Tabla de contenidos:- Presentando nuestro proyecto y herramientas- Configuración de la aplicación e instalación del paquete- Construcción del tablero- Prototipado, estilos y temas - Características de Joy UI- Filtrado, ordenación, edición - Características de la Rejilla de Datos- Conclusión, pensamientos finales, P&R
Práctica con AG Grid's React Data Grid
React Summit 2022React Summit 2022
147 min
Práctica con AG Grid's React Data Grid
WorkshopFree
Sean Landsman
Sean Landsman
Comienza con AG Grid React Data Grid con un tutorial práctico del equipo principal que te guiará a través de los pasos para crear tu primera cuadrícula, incluyendo cómo configurar la cuadrícula 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 de inmediato a tus proyectos. También descubrirás cómo cargar datos en la cuadrícula y diferentes formas de agregar representación personalizada a la cuadrícula. Al final del masterclass, habrás creado una cuadrícula de datos AG Grid React y la habrás personalizado con componentes funcionales de React.- Comenzando e instalando AG Grid- Configurando ordenamiento, filtrado, paginación- Cargando datos en la cuadrícula- La API de la cuadrícula- Usando hooks y componentes funcionales con AG Grid- Capacidades de la edición comunitaria gratuita de AG Grid- Personalizando la cuadrícula con componentes de 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.
Masterclass de alto rendimiento Next.js
React Summit 2022React Summit 2022
50 min
Masterclass de alto rendimiento Next.js
Workshop
Michele Riva
Michele Riva
Next.js es un marco convincente que facilita muchas tareas al proporcionar muchas soluciones listas para usar. Pero tan pronto como nuestra aplicación necesita escalar, es esencial mantener un alto rendimiento sin comprometer el mantenimiento y los costos del servidor. En este masterclass, veremos cómo analizar el rendimiento de Next.js, el uso de recursos, cómo escalarlo y cómo tomar las decisiones correctas al escribir la arquitectura de la aplicació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