React.js #3: Propiedades y aplicar estilos a los componentes

En esta tercera entrada de la serie sobre React.js vamos a ver las propiedades. Básicamente, las propiedades sirven para pasar información de un componente padre a un componente hijo. En cuanto a la sintaxis, desde el padre sería como un atributo de HTML (propiedad=»valor») y para acceder desde el hijo, se hace a través del objeto props. Como nota, es importante saber que las propiedades son inmutables, es decir, no se deberían modificar ni actualizar. También hay que tener en cuenta que React tiene reservadas ciertas propiedades ( className , onClick , onChange , etc.), por tanto, nosotros no podremos ponerle ningún nombre de estos a nuestras propiedades.

Propiedades en componentes

Para este post voy a seguir utilizando el ejemplo del post anterior. Dicho esto, vamos a crear un listado de posts con un componente llamado PostList que tendrá unos componentes hijos llamados PostItem a los cuales les pasaremos la información del post desde PostList (el padre) y la mostraremos.

Creamos el componente PostItem:

Estamos utilizando un Stateless Component, porque será un componente solo de mostrado ya que, en principio, no tendrá estado. Al ser un Stateless Component, a las propiedades se acceden pasándolas por parámetro en la función. Si fuese un Class Component se accederían a través de this.props . En este caso sería this.props.title y this.props.content .

También, estamos importando PropTypes que lo utilizamos para comprobar que las propiedades que recibimos son del tipo que queremos. En este caso, un string y que son requeridas. Si no cumpliese alguna de estas reglas, nos saldría un error en la consola del navegador.

Ahora vamos a crear un componente para el listado llamado PostList:

Estamos llamando al componente creado anteriormente y le estamos pasando las propiedades que hemos puesto como requeridos.

Lo único que nos falta es llamar al componente PostList desde el componente principal (App) para mostrar todo. Primero importaremos el componente PostList y después lo llamaremos dentro del método render:

Ahora si arrancamos el servidor de desarrollo, veremos lo siguiente:

 

 

Una vez ya tenemos esto, vamos a mejorarlo un poco. Lo que vamos a hacer va a ser, en vez de pasarle dos propiedades (title y content) al componente PostItem, le vamos pasar una propiedad llamada post  en formato JSON y así lo simplificamos.

Para ello, vamos al componente PostItem y lo adaptamos:

En cuanto a las propiedades, estamos accediendo primero al objeto post y después a las propiedades title y content  del objeto. En cuanto a los PropTypes, se ha modificado para que acepte un objeto con las propiedades title y content , pero el funcionamiento es el mismo.

Ahora vamos a modficar el componente PostList:

Como ves, ha cambiado la forma en la que se pasan las propiedades. Se ponen 2 corchetes ({{}}) y dentro se ponen las propiedades. Se ponen 2 corchetes, porque el primero indica a React.js que es JS y el segundo es para formar el JSON.

Hecho esto, si vamos al navegador y todo ha ido bien, veremos el mismo resultado que antes, pero internamente es diferente.

 

Aplicar estilos a componentes

Aprovechando que estamos viendo las propiedades, vamos a ver como aplicar estilos a los componentes. Primero de todo, hay que decir que hay muchas formas de aplicar estilos a los componentes, cada una con sus ventajas e inconvenientes. En esta entrada, vamos a ver las más básicas de todas que son los estilos en línea y los archivos CSS. En entradas posteriores, veremos más en profundidad las demás opciones, pero como esta entrada trata sobre propiedades veremos las mencionadas anteriormente.

Archivo CSS

El funcionamiento es básicamente como un archivo de CSS incrustado en un HTML. Creamos el archivo CSS en la raiz del proyecto:

Importamos el CSS desde App.js:

Y aplicamos la clase nav en Header:

Si te fijas, estamos utilzando la propiedad className  y no class como sería en HTML.

Con esto, si entramos al navegador deberemos ver lo siguiente:

 

Uno de los inconvenientes al utilizar esta manera será que los estilos serán globales y no locales por componente. Esto hará que se puedan ver afectados componentes que a lo mejor no deberían.

 

Estilos en línea

Vamos a aplicarlos al componente Footer:

Creamos un objeto con las propiedades CSS y lo llamamos desde la propiedad style  del componente que queremos aplicarle los estilos.

Esta opción tiene bastantes inconvenientes. Algunos de ellos son que no se pueden utilizar media queries, no se pueden utilizar selectores CSS como clases, id o elementos, se tiene que utilizar una sintaxis camel case para las propiedades CSS, entre otras.

El resultado sería este:

 

Como he comentado antes, hemos visto estas dos opciones porque tienen que ver con las propiedades, pero como puedes ver no son las mejores opciones que existen, éstas las veremos más adelante.

Si quieres ver el ejemplo de esta entrada en vivo, puedes verlo en este enlace: https://repl.it/@vreaxe/Reactjs-Propiedades-y-aplicar-estilos-a-los-componentes

 


Aloja tu proyecto en DigitalOcean: Obtén $200 de crédito gratis al registrarte a través de este enlace.

Si hay cualquier tipo de error en el post o te surge cualquier duda, no dudes en ponerlo en los comentarios o enviarme un correo desde la página de contacto.

? CONTACTAR

Deja una respuesta

  Acepto la política de privacidad