Cómo lograr la composición de diseño en React

Rate this content
Bookmark

Usar CSS en esta era de componentes es difícil. Se han creado muchas herramientas para ayudarnos con este problema, pero todas fallan en el único problema que las herramientas nunca pueden resolver: ¿Qué componente debería encargarse de qué estilos? En esta charla, repasaremos estrategias sobre cómo construir diseños de manera componible.

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

FAQ

Travis Waithmer trabaja para Plex y es el creador y mantenedor de Bedrock Layout Primitives. Puedes encontrarlo en Twitter como Travis Waithmer, en su cuenta de Canvas o en su blog en non-traditional.dev.

Plex es una plataforma de transmisión en línea que permite transmitir videos personales y videos a pedido. Están contratando, y puedes encontrar más información sobre carreras en Plex.tv/careers.

Bedrock Layout Primitives es una biblioteca de diseño diseñada para facilitar la composición de aplicaciones de React en la web, permitiendo una reutilización eficiente del diseño a través de componentes modulares.

En React, un diseño de héroe se puede lograr mediante la composición cuidadosa de diferentes componentes como stack, inline, cover, frame y split, que permiten diversas disposiciones y estilos.

La ventaja de usar componentes de diseño en React es que permiten reutilizar y modularizar los estilos de diseño, haciendo que el código sea más escalable y fácil de mantener en grandes aplicaciones.

Puedes aprender más sobre la composición de diseños en React en bedrocklayout.dev o tomando un curso en newline.co donde Travis Waithmer enseña sobre este tema.

El componente 'stack' en Bedrock Layout Primitives es usado para apilar elementos uno encima del otro con un espacio consistente, ayudando a organizar visualmente los componentes de forma uniforme y ordenada.

El componente 'inline' coloca elementos en línea y gestiona automáticamente el ajuste de los elementos cuando no hay suficiente espacio, similar a como el texto se ajusta en un párrafo.

Travis Waith-Mair
Travis Waith-Mair
8 min
21 Jun, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla discute cómo lograr la composición de diseño en React utilizando los Primitivos de Diseño de Bedrock. Al componentizar el diseño CSS, se pueden lograr y reutilizar diseños complejos en diferentes componentes. La charla también aborda los desafíos de lograr diseños complejos, como alineaciones de tarjetas, y proporciona soluciones para mantener la alineación y la capacidad de respuesta. La biblioteca de primitivos de diseño de Bedrock simplifica los diseños web y ofrece flexibilidad en la composición de diseños.

1. Logrando la Composición de Diseño en React

Short description:

¡Hola, React Summit! En esta charla, discutiré cómo lograr la composición de diseño en React utilizando los Primitivos de Diseño de Bedrock. Al componentizar el diseño CSS, podemos crear primitivas de diseño como stack, inline, split, cover y frame. Estos componentes se pueden combinar para lograr diseños complejos y se pueden reutilizar en diferentes componentes. La biblioteca de primitivas de diseño de Bedrock simplifica los diseños web y ofrece flexibilidad en la composición de diseños. Visita bedrocklayout.dev para obtener más información.

¡Hola, React Summit, y bienvenidos a mi charla sobre cómo lograr la composición de diseño en React. Mi nombre es Travis Waithmer, y pueden encontrarme en Twitter, en Travis Waithmer, todo en mi cuenta en Canvas, o en mi blog en non-traditional.dev.

Ahora, un poco sobre mí, trabajo para Plex, que es una plataforma de transmisión en línea que te permite transmitir tanto tus video de tus medios personales como video a pedido que curamos para ti. Y estamos contratando, por supuesto, Plex.tv slash careers. También soy el creador y mantenedor de Bedrock Layout Primitives. Es una biblioteca de diseño diseñada para facilitar el diseño de tus aplicaciones de React en la web. Y ese es el punto de esta charla, ¿cómo logramos la composición de diseño? ¿Cómo usamos el modelo de composición de React en nuestro diseño web?

Bueno, veamos este diseño de héroe. Esto es probablemente algo que todos hemos hecho en algún momento de nuestra carrera. Ahora, una forma ingenua de abordar esto es abordarlo a nivel de componente. Tenemos un contenedor de héroe, tenemos un héroe superior, izquierdo, derecho, y así sucesivamente. Y así es como nos enseñan a escribir nuestro CSS, de arriba hacia abajo, con un enfoque basado en excepciones. Ahora, desafortunadamente, esto se vuelve muy difícil de escalar en nuestras aplicaciones, por lo que comenzamos a reutilizar nuestros componentes. Ahora, podemos tener metodologías de CSS que nos ayuden, pero solo nos llevan hasta cierto punto. Nos ayudan a administrar nuestras hojas de estilo a gran escala, pero cuando abordamos cada componente y, específicamente, el diseño de cada componente, como algo único, estamos perdiendo una oportunidad fantástica para reutilizar el diseño. Entonces, ¿qué tal si te dijera que el diseño de CSS se puede componentizar? ¿Qué tal si creamos algunas primitivas de diseño? Por ejemplo, ¿qué tal si tuviéramos un componente stack que apilara cosas una encima de la otra? Un inline que colocara las cosas en línea con espacios entre ellas? Un componente split que dividiera las cosas solo desde el lado izquierdo y derecho, de manera uniforme a lo largo del ancho del padre? ¿Qué tal si tuviéramos un componente cover que cubriera un área y centrara verticalmente los hijos en su interior? Y un componente frame que tomara cosas como medios, imágenes o cualquiera de sus hijos y lo forzara a tener una relación de aspecto? Ahora, individualmente, cada uno solo puede hacer una cosa única. Pero cuando los combinamos, podemos lograr ese mismo diseño de héroe. Podemos tener un inline, un par de stacks, un cover, frame, split. A través de una composición cuidadosa, ahora hemos logrado ese diseño de héroe. Pero eso no es todo. Podemos colocarlo en JSX de esta manera y simplemente usar la composición de React. Y luego podemos usar eso en nuestros otros componentes, como un formulario de registro, un feed de publicaciones de blog, una página de características. Todos estos pueden usar exactamente los mismos componentes, exactamente los mismos diseños, pero simplemente compuestos de diferentes maneras para lograr sus diseños individuales. Y eso es exactamente para lo que está diseñada la biblioteca de primitivas de diseño de Bedrock. Es el guión bajo de los diseños web. Luego podemos tomar... Y si quieres obtener más información, está en bedrocklayout.dev. Pero tomemos, por ejemplo, un simple componente stack. Probablemente todos tengamos algo como esto, donde necesitamos colocar un espacio consistente encima de otros elementos. Bueno, utilizando solo uno de los componentes de diseño de Bedrock, el stack, por ejemplo, podemos lograr este componente de suscripción. Ahora, otro patrón común es que necesitamos hacer cosas de manera similar a como funciona nuestro párrafo en la web.

2. Logrando Diseños Complejos en React

Short description:

Cuando nos quedamos sin espacio, nuestras palabras se envolverán automáticamente a la siguiente fila según la justificación que establezcamos. El componente de agrupación en línea es útil para contenido en línea que se envuelve automáticamente. Para diseños más complejos como una alineación de tarjetas, debemos asegurarnos de que cada tarjeta ocupe la altura completa de la fila, manteniendo las imágenes y los encabezados alineados. La descripción siempre debe estar centrada verticalmente. Las imágenes deben mantener una relación de aspecto y recortarse si es necesario. Las tarjetas deben estar en una cuadrícula receptiva con un ancho de columna mínimo, envolviendo y ajustando las columnas según sea necesario.

Cuando nos quedamos sin espacio, nuestras palabras se envolverán automáticamente a la siguiente fila según la justificación que establezcamos. Ahí es donde entra en juego el componente de agrupación en línea. Podemos tener cosas en línea. Pero a medida que nos quedamos sin espacio, se envolverá automáticamente según la justificación.

Y esto es cómo se ve en el código. Tenemos nuestro componente de menú que obviamente compone ese lado derecho dentro de él. Y simplemente usamos un grupo en línea para colocar todos nuestros elementos de navegación en una fila, y luego se agruparán una vez que el ancho no permita que todos se mantengan en una sola fila.

¿Y qué tal algo mucho más complicado como una alineación de tarjetas? Esto parece bastante simple al principio, pero hay algunas cosas a tener en cuenta. Cada una de estas tarjetas debe ocupar la altura completa de la fila en la que se encuentra, pero el imagen y los encabezados de todas las tarjetas deben alinearse. Pero la descripción, sin importar su tamaño, debe estar centrada verticalmente dentro de cada una de estas tarjetas.

Además de eso, todas las imágenes deben mantener una relación de aspecto, y las imágenes deben ser recortadas para mantener esa relación de aspecto. Y finalmente, cada una de estas tarjetas debe estar en una cuadrícula receptiva, deben mantener un ancho de columna mínimo, y si no pueden mantener ese ancho de columna y mantenerlos todos en la misma fila, debemos comenzar a envolver y ajustar las columnas en consecuencia.

Entonces, en el código, podríamos escribir nuestro componente de tarjeta usando un cover, que nos permite especificar la parte superior y la inferior. En este caso, la parte superior es un h3 y la parte inferior utiliza un componente frame para forzar una relación de aspecto de 16 por 9, y luego tenemos nuestra descripción que estará centrada verticalmente dentro de ese cover. Y luego establecemos esa altura en 100% para que siempre sea la altura completa de la fila en la que se encuentra. Y luego usaremos todas estas tarjetas dentro de una cuadrícula y podemos establecer el ancho mínimo del elemento a 40 ch para que las columnas sean lo más anchas posible para incluir todo en su interior. Pero si no pueden caber todos y sin tener al menos una columna de 40 ch, entonces comenzará a envolver y optimizar eso. Eso es todo el tiempo que tengo para ustedes hoy. Pueden obtener más información en bedrock-layout.dev o pueden ir a mi curso en newline.co donde les enseño más sobre la composición de diseños en React. Gracias por su excelente tiempo y espero que tengan un excelente resto de su conferencia.

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.
Construir un Sistema de Diseño con React y Tailwind CSS
React Summit 2022React Summit 2022
27 min
Construir un Sistema de Diseño con React y Tailwind CSS
Top Content
This Talk discusses design systems and how to build one using React and Tailwind CSS. Tailwind CSS provides utility classes for building complex layouts without writing CSS rules. Custom colors can be added to the Tailwind CSS config file, and font styles and text sizes can be customized. The entire Tailwind CSS configuration can be customized to meet specific requirements. Base styles can be added to the config file itself using a plugin. Reusable components can be created with Tailwind CSS, allowing for easy customization of size and color.
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.
React Slots: una nueva forma de composición
React Advanced Conference 2022React Advanced Conference 2022
21 min
React Slots: una nueva forma de composición
Top Content
Today's Talk introduces React Snots, a new way of composition for design systems. The configuration way provides flexibility but can lead to uncontrolled use cases and wrong patterns. React Slots RFC was created to address the limitations of React's support for web components and slots. It introduces createHost and createSlot APIs to enable component composition and solve previous problems. React Slots RFC allows for flexible component styling and the creation of complex structures without rendering them to the browser.
Rethinking CSS - Introducing Stylex
React Finland 2021React Finland 2021
25 min
Rethinking CSS - Introducing Stylex
Top Content
CSS + superpowers - bloat. How Stylex creates a zero-cost abstraction that gives CSS superpowers.
El componente de React más caro del mundo y cómo dejar de escribirlo
React Advanced Conference 2021React Advanced Conference 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.

Workshops on related topic

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.
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