viernes, 5 de mayo de 2023

🥱

Aprendiendo React JS Hooks de cero a experto

Introducción

React JS es una de las bibliotecas más populares para el desarrollo de aplicaciones web. En su versión 16.8, se introdujeron los Hooks, que permiten a los desarrolladores manejar el estado y otros conceptos en los componentes funcionales de una manera más efectiva y sencilla. En este artículo, aprenderemos cómo utilizar los Hooks de React JS, desde cero hasta nivel experto.

¿Qué son los Hooks?

Los Hooks en React JS son funciones especiales que nos permiten utilizar características de React, como el estado o los ciclos de vida, en componentes funcionales. Con los Hooks, ya no estamos limitados a utilizar clases para crear componentes, podemos hacer todo en componentes funcionales.

useState: Manejando el estado

Uno de los Hooks más utilizados es useState. Nos permite declarar variables de estado en nuestros componentes y actualizarlas de manera sencilla. Veamos un ejemplo:

import React, { useState } from 'react';

const ComponenteEjemplo = () => {
  const [count, setCount] = useState(0);

  const incrementar = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>Contador: {count}</p>
      <button onClick={incrementar}>Incrementar</button>
    </div>
  );
};

export default ComponenteEjemplo;

En este ejemplo, estamos utilizando useState para crear una variable de estado count con un valor inicial de 0. También tenemos una función setCount que nos permite actualizar ese valor. Cuando hacemos clic en el botón “Incrementar”, llamamos a la función incrementar, que aumenta el valor de count en 1.

useEffect: El ciclo de vida de los componentes

Otro Hook importante es useEffect. Nos permite ejecutar código lado del cliente después de que el componente se haya renderizado. Podemos usar useEffect para realizar peticiones a una API o suscribirnos a eventos del DOM. Veamos un ejemplo:

import React, { useState, useEffect } from 'react';

const ComponenteEjemplo = () => {
  const [data, setData] = useState([]);

  useEffect(() => {
    fetch('https://api.example.com/data')
      .then(response => response.json())
      .then(data => setData(data))
      .catch(error => console.log(error));
  }, []);

  return (
    <div>
      <ul>
        {data.map(item => (
          <li key={item.id}>{item.name}</li>
        ))}
      </ul>
    </div>
  );
};

export default ComponenteEjemplo;

En este ejemplo, estamos utilizando useEffect para hacer una solicitud a una API y obtener los datos. Luego, actualizamos el estado utilizando la función setData. Pasamos un array vacío [] como segundo argumento, lo que significa que solo queremos que el efecto se ejecute una vez, después del primer renderizado del componente.

useContext: Accediendo al contexto global

El Hook useContext nos permite acceder al contexto global de nuestra aplicación. El contexto nos facilita pasar datos a través de la jerarquía de componentes sin tener que pasar props manualmente en cada nivel. Veamos un ejemplo:

import React, { useContext } from 'react';

const Context = React.createContext();

const ComponentePadre = () => {
  return (
    <Context.Provider value="Hola, mundo!">
      <ComponenteHijo />
    </Context.Provider>
  );
};

const ComponenteHijo = () => {
  const mensaje = useContext(Context);

  return <p>{mensaje}</p>;
};

export default ComponentePadre;

En este ejemplo, estamos creando un contexto utilizando React.createContext. En el componente padre, envolvemos el componente hijo con el proveedor de contexto Context.Provider, y le pasamos el valor que queremos compartir. En el componente hijo, utilizamos useContext para acceder al valor del contexto y mostrarlo en pantalla.

Conclusion

Con esta introducción a los Hooks de React JS, hemos aprendido cómo utilizar useState para manejar el estado, useEffect para el ciclo de vida del componente y useContext para acceder al contexto global. ¡Ahora estás en camino de convertirte en un experto en React! Recuerda practicar y explorar más Hooks para aprovechar al máximo esta poderosa característica de React JS. ¡Buena suerte!