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.
<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.- Es un hook es decir que engancha la funcionalidad del estado de React
Recursos
Usando el Hook de estado - React
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.- El Hook de efecto te permite llevar a cabo efectos secundarios en componentes funcionales
Recursos
Usando el Hook de efecto - React
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.- te permite suscribirte al contexto React sin introducir el anidamiento
Recursos
Referencia de la API de los Hooks - React
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')
);
<aside> 📌 RESUMEN: useContext es un hook que nos permitirá acceder al contexto de nuestra aplicación de React
</aside>