Pasar al contenido principal
Alexys Lozada
José Luján
Manuel Rodriguez
José Luján
Luis Avilés
Álvaro Felipe
José Luján
Beto Quiroga
Jonathan MirCha
Jonathan MirCha
Álvaro Felipe
Alexys Lozada, Álvaro Felipe, Jonathan MirCha
Beto Quiroga
Alexys Lozada
Alexys Lozada
José Luján
Álvaro Felipe
Álvaro Felipe
Jonathan MirCha
Jonathan MirCha
Alexys Lozada, José Luján
Alexys Lozada, José Luján
Alexys Lozada, José Luján
Camilo Adobe
Álvaro Felipe
José Luján
Jonathan MirCha
Álvaro Felipe
Álvaro Felipe
Beto Quiroga, Alexys Lozada
Álvaro Felipe
Juan Villalvazo
Luis Avilés
Jonathan MirCha
Jonathan MirCha
Jonathan MirCha

5 cosas que te ayudarán con React.js

consejos de lo que necesitas entender con react y recomendaciones para aplicar en tus proyectos

Cuando trabajamos con Reactjs y somos principiantes en el tema, en muchos casos omitimos o ignoramos algunos detalles de la librería que requieren ser analizados para hacer más ameno el desarrollo. Aquí te presento una serie de conceptos que pueden ser una fuerte base para comprender el funcionamiento de esta maravillosa herramienta: 

Comprender la diferencia entre Propiedad y Estado

En resumen las diferencias son sencillas y para no ponernos muy técnicos la podemos explicar con un ejemplo: en nuestra aplicación utilizamos un sistema de tarjetas que poseen tres elementos que se modificaran para reutilizarlas, digamos que serán la imagen de la tarjeta, titulo y descripción; para que sean cambiadas segun los valores que se le transfieren usamos las props para pedir dichos datos:

import React from 'react';

const Tarjeta = (props) => (
    <div className="tarjeta-contenedor">
       <div className="imagen-contenedor">
          <img className="imagen" src={props.imagenUrl} />
        </div>
        <div className="contenido">
           <h2>{props.titulo} </h2>
           <p>{prosp.descripcion} </p>
        </div>
    </div>);

export default Tarjeta;

Luego podemos transferir dichos valores desde otro componente donde estemos importando esta tarjeta como atributos dentro del elemento jsx, a este componente le llamaremos para este ejemplo vistaTarjetas.js

import React from 'react';
import Tarjeta from './tarjeta';

class VistaTarjeta extends React.Component {
  constructor(){
    super();
  }
  render(){
    return(
      <div className="Container">
        <Tarjeta imagenUrl="https://avatars2.githubusercontent.com/u/10574326?v=3&s=460"
          titulo="edteam tarjeta"
          descripcion="EDteam la plataforma de educación en linea que te hace sentir en casa"/>
      </div>
    )
  }
}

Si quisiéramos introducir estados para generar alguna interactividad podemos declararlos en un componente que extienda del objeto React.Component, en este caso vistaTarjeta y lo usaremos para guardar un número de tarjeta con sus datos:

import React from 'react';
import Tarjeta from './tarjeta';

class VistaTarjeta extends React.Component {
  constructor(){
    super();
    this.state = {
    tarjetas: [
        {
          imagenUrl: "https://avatars2.githubusercontent.com/u/10574326?v=3&s=460",
          titulo: "edteam tarjeta",
          descripcion: "edteam la plataforma de educacion en linea que te hace sentir en casa"
        },
        {
          imagenUrl: "https://avatars2.githubusercontent.com/u/10574326?v=3&s=460",
          titulo: "edteam tarjeta numero 2",
          descripcion: "edteam comparte con esta gran comunidad"
        }
      ]
    }
  }
  render(){
    return(
      <div className="Container">
        {this.state.tarjetas.map((tarjeta) => (
          <Tarjeta imagenUrl={tarjeta.imagenUrl}
            titulo={tarjeta.titulo}
            descripcion={tarjeta.descripcion}/>
        ))}
      </div>
    )
  }
}

¿Que tienen de especial los estados? la respuesta a esta pregunta es sencilla, pueden ser modificados desde el mismo objeto utilizando un método llamado this.setState(datos), donde datos representa el json con los estados que deseas modificar. Un ejemplo sencillo siguiendo la secuencia del ejemplo anterior seria vaciar la lista de tarjetas con un método que crearemos en nuestra clase y lo ejecutaremos con un botón: 

import React from 'react';
import Tarjeta from './tarjeta';

class VistaTarjeta extends React.Component {
  constructor(){
    super();
    this.state = {
    tarjetas: [
        {
          imagenUrl: "https://avatars2.githubusercontent.com/u/10574326?v=3&s=460",
          titulo: "edteam tarjeta",
          descripcion: "edteam la plataforma de educacion en linea que te hace sentir en casa"
        },
        {
          imagenUrl: "https://avatars2.githubusercontent.com/u/10574326?v=3&s=460",
          titulo: "edteam tarjeta numero 2",
          descripcion: "edteam comparte con esta gran comunidad"
        }
      ]
    }
    this.VaciarTarjetas.bind(this);
  }
  VaciarTarjetas(){
    this.setState({tarjetas: []});
  }
  render(){
    return(
      <div className="Container">
        {this.state.tarjetas.map((tarjeta) => (
          <Tarjeta imagenUrl={tarjeta.imagenUrl}
            titulo={tarjeta.titulo}
            descripcion={tarjeta.descripcion}/>
        ))}
        <button onClick={this.vaciarTarjetas}>
          Vaciar
        </button>
      </div>
    );
  }
}

Entender cómo funcionan los ciclos de vida

Debemos comprender que cada ciclo de vida representa un estado por el cual está pasando un componente, es decir, tienes el control absoluto de las acciones que se están ejecutando cuando un componente se va a renderizar, actualizar o simplemente borrar de la vista. Si no conoces cuales son los ciclos de vida que manejas con react aquí están resumidos:

  •  ComponentWillMount() representa el momento en el que nuestro componente se le dará render.

  •  ComponentDidMount() este estado representa el momento en el nuestro componente ha sido renderizado, se puede utilizar cuando quieres realizar una accion que requiere de la aparición del elemento definido.

  •  ComponentWillUnmount() es aquel instante donde el elemento será desmontado.

  •  ComponentDidUnmount() se entiende como el momento en el que el componente fue desmontado.

  •  ComponentDidUpdate() representa aquel instante en el que el componente será actualizado, es decir que cambian sus propiedades o estados.

  •  ComponentWillUpdate() se define como el proceso donde ya las propiedades o estados del componente fueron actualizados.

Nunca modifiques estados dentro de un ciclo de vida

Esto es un tip súper útil cuando se trata de mapear bugs que no generan un log preciso, si realizas esto vas a generar un ciclo infinito en la mayoría de los casos, imaginate usar this.setState() dentro de un ComponentDidUpdate, analiza por un momento este caso, si comprendemos que un ciclo de vida es un trigger, evento o un momento exacto por el que pasa un componente y sabemos que este que nombramos se ejecuta cuando se cambia un estado o una propiedad; tendremos como resultado un bucle en el cual modificamos un estado y volvemos a llamar al mismo ciclo de vida luego de su propia ejecución.

Define bien tus elementos UI

Sabemos que React está orientado a componentes, si queremos una aplicación escalable debemos definir de forma precisa para que funcionara cada componente y de que tipo será, ¿Qué quiero decir con tipo? bueno existen dos tipos de componentes muy utilizados: Los stateless components los cuales son funciones que retornan un jsx y solo reciben propiedades, es decir que no usan ciclos de vida y los ES6 components los cuales son componentes que se construyen con clases de ecmascript 6 y extienden del objeto Component que posee los ciclos de vida. Comprendiendo lo anterior debemos entender que función tendrá el componente para saber que tipo usaremos. 

Utiliza una store

Estas son librerías o patrones de flujo de datos que permiten almacenar todos los estados en un objeto con sus propios métodos para modificarlos, este objeto transfiere sus valores a React a través de las propiedades, en pocas palabras para aquellos que manejan el MVC esta herramienta actúa como un controlador para react (el cual representa la View), podemos mencionar Redux, Mobx, Baobab, Flux y Reflux.

Suscríbete al blog de EDteam

Ingresa tu correo electrónico para recibir nuestro boletín semanal