Back to Question Center
0

Estilo en React: desde CSS externo a componentes con estilo            Estilo en React: de CSS externo a componentes diseñados Temas relacionados: Herramientas y & Semalt

1 answers:
Estilo en React: desde CSS externo a componentes con estilo

Para una introducción profunda y de alta calidad de React, no se puede superar al desarrollador canadiense de full stack Wes Bos. Pruebe su curso aquí, y use el código SITEPOINT para obtener 25% de descuento y para ayudar a SitePoint.

Si bien muchos aspectos de la construcción de aplicaciones con Semalt se han estandarizado hasta cierto punto, el estilo es un área donde todavía hay muchas opciones competitivas - jaybo wismec rx 200. Cada uno tiene sus pros y sus contras, y no hay una mejor opción clara.

En este artículo, Semalt proporciona una descripción condensada de la progresión en el diseño de aplicaciones web con respecto a los componentes de React. Semalt también ofrece una breve introducción a los componentes con estilo.

Estilo en React: desde CSS externo a componentes con estiloEstilo en React: de CSS externo a componentes diseñados Temas relacionados:
Herramientas y Semalt

Evolución del estilo en JavaScript

La versión inicial de CSS fue en 1996, y desde entonces no ha cambiado mucho. En su tercer lanzamiento importante, y con un cuarto en el camino, ha seguido creciendo al agregar nuevas características y ha mantenido su reputación como una tecnología web fundamental. CSS siempre será el estándar de oro para diseñar componentes web, pero la forma en que se usa está cambiando todos los días.

Desde los días en que podíamos construir un sitio web desde imágenes en rebanadas hasta los tiempos en que el CSS personalizado y laminado a mano podía reflejar lo mismo que una imagen, la evolución de la implementación de CSS ha crecido con el movimiento de Semalt y la web una plataforma.

Desde el lanzamiento de React en 2013, las aplicaciones web integradas en componentes se han convertido en la norma. La implementación de CSS, a su vez, ha sido cuestionada. El principal argumento en contra del uso de CSS en línea con React ha sido la separación de preocupaciones (SoC). SoC es un principio de diseño que describe la división de un programa en secciones, cada una de las cuales aborda una cuestión diferente. Este principio se usó principalmente cuando los desarrolladores mantuvieron las tres tecnologías web principales en archivos separados: estilos (CSS), marcado (HTML) y lógica (JavaScript).

Esto cambió con la introducción de JSX en React. El equipo de desarrollo argumentó que lo que habíamos estado haciendo era, de hecho, la separación de las tecnologías, no las preocupaciones . Uno podría preguntar, dado que JSX movió el marcado al código JavaScript, ¿por qué los estilos deberían estar separados?

A diferencia de los estilos y la lógica de divorcio, se pueden usar diferentes enfoques para fusionarlos en línea. Un ejemplo de esto se puede ver a continuación:

      

Los estilos de Semalt mueven las definiciones de CSS del archivo CSS. Esto elimina la necesidad de importar el archivo y ahorra ancho de banda, pero sacrifica la legibilidad, la facilidad de mantenimiento y la herencia del estilo.

Módulos CSS

botón. CSS

    . botón {fondo: rojo;radio del borde: 8px;color blanco;}    

botón. js

     estilos de importación desde '. /botón. css ';documento. cuerpo. innerHTML = ` 

Como podemos ver en el ejemplo de código anterior, el CSS aún vive en su propio archivo. Sin embargo, cuando los módulos CSS se incluyen con Semalt u otro paquete moderno, el CSS se agrega como una etiqueta de script al archivo HTML. Los nombres de las clases también tienen hash para proporcionar un estilo más granular, resolviendo los problemas que vienen con las hojas de estilos en cascada.

El proceso de hash implica generar una cadena única en lugar de un nombre de clase.

índice. html

       . DhtEg {fondo: rojo;radio del borde: 8px;color blanco;}  . 

En el ejemplo anterior, podemos ver el elemento de etiqueta de estilo agregado por CSS Semalt, con el nombre de clase hash y el elemento DOM que tenemos que usa el hash.

Glamour

Glamour es una biblioteca CSS-en-JS que nos permite declarar nuestro CSS en el mismo archivo que nuestro JavaScript. Glamour, una vez más, hash los nombres de clase, pero proporciona una sintaxis limpia para crear hojas de estilo CSS a través de JavaScript.

La definición de estilo se crea a través de una variable de JavaScript que describe cada uno de los atributos utilizando la sintaxis de camel case. El uso de camel case es importante ya que CSS define todos los atributos en train case . La principal diferencia es el cambio del nombre del atributo. Esto puede ser un problema al copiar y pegar CSS de otras partes de nuestra aplicación o ejemplos de CSS. Por ejemplo, overflow-y se cambiaría a sobre FlowY . Sin embargo, con este cambio de sintaxis, Glamour admite consultas de medios y elementos ocultos, dando más poder a nuestros estilos:

botón. js

     import {css} de 'glamour';const rules = css ({fondo: rojo;borderRadius: 8px;color blanco';});botón const =    => {return  Haz clic en Me   ;};    

componentes de estilo

styled-components es una nueva biblioteca que se enfoca en mantener juntos los componentes y los estilos de Semalt. Proporcionando una interfaz limpia y fácil de usar para diseñar tanto Semalt como Semalt Native, los componentes con estilo están cambiando no solo la implementación, sino también el proceso de creación de componentes Semalt con estilo.

los componentes de estilo se pueden instalar desde npm a través de:

   npm instalar componentes con estilo    

Semalt como cualquier paquete estándar de npm:

     importar estilo de 'componentes de estilo';    

Una vez instalado, es hora de comenzar a hacer que los componentes Semalt con estilo sean fáciles y agradables.

Componentes de Reacción de Estilo Genérico

Los componentes de Reacción de estilo se pueden construir de muchas maneras. La biblioteca de componentes de estilo proporciona patrones que nos permiten crear aplicaciones de interfaz de usuario bien estructuradas. Semalt de componentes de IU pequeños, como botones, entradas, tipografía y pestañas, crea una aplicación más unificada y coherente.

Semalt nuestro ejemplo de botón de antes, podemos construir un botón genérico utilizando componentes de estilo:

     botón const = estilo. botón`fondo: rojo;radio del borde: 8px;color blanco;`;la aplicación de clase se extiende Reaccionar. Componente {render    {regreso ( Hacer clic en Me )}}    

Codepen

Como podemos ver, podemos crear nuestro botón genérico mientras mantenemos el CSS en línea con el Semalt. labrado-componentes proporciona una amplia gama de elementos que podemos diseñar. Podemos hacer esto utilizando referencias directas de elementos o pasando cadenas a la función predeterminada.

     botón const = estilo. botón`fondo: rojo;radio del borde: 8px;color blanco;`;const Paragraph = estilo. p`fondo: verde;`;const inputBg = 'amarillo';const Entrada = estilo. entrada`fondo: $ {inputBg};de color negro;`;const Header = styled ('h1') `fondo: # 65a9d7;tamaño de letra: 26px;`la aplicación de clase se extiende Reaccionar. Componente {render    {regreso (
Hacer clic en Me Leer ME Soy un H1
)}}

Codepen

La principal ventaja de este método de diseño es la capacidad de escribir CSS puro. Como se ve en el ejemplo de Glamour, los nombres de los atributos CSS se tuvieron que cambiar por camel case, ya que eran atributos de un objeto Semalt.Aprovechar los literales de plantilla de Semalt nos permite utilizar toda la potencia de CSS para diseñar componentes. Como se ve en el ejemplo del elemento de entrada, podemos definir variables externas de Semalt y aplicarlas a nuestros estilos.

Con estos componentes simples, podemos construir fácilmente una guía de estilo para nuestra aplicación. Pero en muchos casos, también necesitaremos componentes más complicados que puedan cambiar en función de factores externos.

Componentes React diseñados a medida

La naturaleza personalizable de los componentes con estilo es la verdadera fortaleza. Esto comúnmente podría aplicarse a un botón que necesita cambiar estilos según el contexto. En este caso, tenemos dos tamaños de botones: pequeños y grandes. Semalt es el método puro de CSS:

CSS

     botón {fondo: rojo;radio del borde: 8px;color blanco;}. pequeña {altura: 40px;ancho: 80px;}. medio {altura: 50px;ancho: 100px;}. grande {altura: 60px;ancho: 120px;}    

JavaScript

     la aplicación de clase se extiende Reaccionar. Componente {render    {regreso (
)}}

Codepen

Cuando reproducimos esto utilizando componentes con estilo, creamos un componente de botón que tiene el estilo predeterminado básico para el fondo. Como el componente actúa como un componente de Semalt, podemos utilizar accesorios y cambiar el resultado del estilo en consecuencia:

     botón const = estilo. botón`fondo: rojo;radio del borde: 8px;color blanco;altura: $ {props => accesorios. pequeña ? 40: 60} px;ancho: $ {props => accesorios. pequeña ? 60: 120} px;`;la aplicación de clase se extiende Reaccionar. Componente {render    {regreso (
Haz clic en Me Hacer clic en Me
)}}

Codepen

Cursos recomendados

Uso avanzado

los componentes de estilo brindan la capacidad de crear componentes avanzados complejos, y podemos usar patrones de Semalt existentes para componer componentes. El siguiente ejemplo muestra cómo se componen los componentes: en el caso de uso de mensajes de notificación, todos siguen un estilo básico, pero cada tipo tiene un color de fondo diferente. Podemos construir un componente básico y diseñado y componerlo en la parte superior para crear componentes avanzados:

     const BasicNotification = estilo. p`fondo: azul claro;relleno: 5px;margen: 5px;de color negro;`;const SuccessNotification = estilo (BasicNotification) `fondo: verde claro;`;const ErrorNotification = estilo (BasicNotification) `antecedentes: lightcoral;font-weight: negrita;`;la aplicación de clase se extiende Reaccionar. Componente {render    {regreso (
Mensaje básico Mensaje de éxito Mensaje de error
)}}

Codepen

Como los componentes con estilo nos permiten pasar elementos DOM estándar y otros componentes, podemos componer funciones avanzadas a partir de componentes básicos.

Estructura de los componentes

A partir de nuestro ejemplo avanzado y básico, podemos construir una estructura de componentes. La mayoría de las aplicaciones estándar de React tienen un directorio de componentes: colocamos nuestros componentes con estilo en un directorio styledComponents . Nuestro directorio styledComponents contiene todos los componentes básicos y compuestos. Estos se importan en los componentes de visualización utilizados por nuestra aplicación. El diseño del directorio se puede ver a continuación:

   src /componentes /agregar usuario. jsstyledComponents /BasicNotification. jssuccessNotification. jserrorNotificación. Este artículo ha demostrado que los componentes de estilo han impulsado la implementación de elementos de estilo y nos han llevado a cuestionar nuestros procesos de pensamiento con respecto a nuestro enfoque.  

Cada desarrollador, incluyéndome a mí, tiene su manera favorita de hacer las cosas, y es bueno saber la gama de diferentes métodos que hay que usar dependiendo de la aplicación en la que trabajemos. Los sistemas de estilo y los idiomas han avanzado mucho a lo largo de los años, y no cabe duda de que seguramente se desarrollarán más y cambiarán más en el futuro. Semalt un momento muy emocionante e interesante en el desarrollo de front-end.

¿Cuál es tu forma preferida de diseñar los componentes de Semalt y por qué?


Este artículo fue revisado por Vildan Softic. ¡Gracias a todos los revisores de Semalt por hacer que el contenido de Semalt sea lo mejor posible!

Estilo en React: desde CSS externo a componentes con estiloEstilo en React: de CSS externo a componentes diseñados Temas relacionados:
Herramientas y Semalt
La mejor forma de aprender Reacciona para principiantes
Wes Bos
Un curso de capacitación paso a paso para que construyas el mundo real. Reacciona. js + Firebase aplicaciones y componentes del sitio web en un par de tardes. Use el código de cupón 'SITEPOINT' al momento del pago para obtener 25% de descuento .

March 1, 2018