🎣 ¿Qué son los React Hooks?

Ideas/conceptos claves

Hook.- Es una función especial que nos permite conectarnos a características de react, por lo tanto, podemos trabajar con métodos especiales que van a estar disponible [useState] sin depender de clases.

Apuntes

<aside> 📌 RESUMEN: Los hooks son funciones que nos permiten desarrollar la lógica de nuestros componentes sin depender de clases y evitar problemas de React como el Component Hell

</aside>


📌 useState

Ideas/conceptos claves

useState.- Es un hook es decir que engancha la funcionalidad del estado de React

Recursos

Usando el Hook de estado - React

Apuntes

Con clases

class Example extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0
    };
  }

  render() {
    return (
      <div>
        <p>You clicked {this.state.count} times</p>
        <button onClick={() => this.setState({ count: this.state.count + 1 })}>
          Click me
        </button>
      </div>
    );
  }
}

Con Hooks

import React, { useState } from 'react';

function Example() {
  // Declaración de una variable de estado que llamaremos "count"
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

<aside> 📌 RESUMEN: El hook useState es una forma de crear un estado local para nuestros componentes funcionales. El cual retorna el valor actual y una función actualizadora los cuales llegan como un arreglo.

</aside>


⚡️ useEffect

Ideas/conceptos claves

useEffect.- El Hook de efecto te permite llevar a cabo efectos secundarios en componentes funcionales

Recursos

Usando el Hook de efecto - React

Apuntes

Componente con clase

class Example extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0
    };
  }

  componentDidMount() {
    document.title = `You clicked ${this.state.count} times`;
  }
  componentDidUpdate() {
    document.title = `You clicked ${this.state.count} times`;
  }

  render() {
    return (
      <div>
        <p>You clicked {this.state.count} times</p>
        <button onClick={() => this.setState({ count: this.state.count + 1 })}>
          Click me
        </button>
      </div>
    );
  }
}

Componente con hooks

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

function Example() {
  const [count, setCount] = useState(0);

  // Similar a componentDidMount y componentDidUpdate:
  useEffect(() => {
    // Actualiza el título del documento usando la Browser API
    document.title = `You clicked ${count} times`;
  });

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

<aside> 📌 RESUMEN: El hook de useEffect nos ayuda a trabajar con efectos secundarios y a remplazar componentDidMount,componentDidUpdate y componentWillUnmount lo que sería en componentes con clase

</aside>


🔌 useContext

Ideas/conceptos claves

useContext.- te permite suscribirte al contexto React sin introducir el anidamiento

Recursos

Referencia de la API de los Hooks - React

Apuntes

Ejemplo

import React from 'react'

const ThemeContext = React.createContext(null);
// Nos Devuelve un Provider que luego lo podemos
// usar para envolver nuestra aplicación

export default ThemeContext;

Usando el Provider:

import React from 'react';
import ReactDOM from 'react-dom';
import ThemeContext from './context/ThemeContext';

ReactDOM.render(
  <React.StrictMode>
    <ThemeContext.Provider value="blue">
      {/*Mi Aplicación*/}
    </ThemeContext.Provider>
  </React.StrictMode>,
  document.getElementById('root')
);

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3b153b50-e359-4966-b77e-8434d32dda82/Untitled.png

<aside> 📌 RESUMEN: useContext es un hook que nos permitirá acceder al contexto de nuestra aplicación de React

</aside>