Hola chicos, en este tutorial les mostraré todo lo que necesitan saber para usar la función useEffect de React como un profesional.
Antes de que existiera useEffect , existían métodos de ciclo de vida, a saber:
componentDidUpdate(prevProps, prevState) {
if (prevProps.foo !== this.props.foo) {/* do something */}
if (prevState.bar !== this.state.bar) {/* do something else */}
}
Con estos métodos de ciclo de vida, podemos manejar de manera confiable cualquier cambio en el estado del componente, entonces, ¿por qué el cambio a useEffect ?
En un momento (creo que ya en 2016), el equipo de React tomó la decisión de crear componentes de React que se pueden instanciar con solo una función regular de Javascript de la vieja escuela. Entonces:
import React from "react";
function MyFunc() {
return <div>Hey!</div>
}
El nuevo enfoque para administrar los cambios de estado llegó en forma de una función useEffect expuesta por la biblioteca React. Entonces, ¿cómo recreamos nuestros amados métodos componentDidMount , componentDidUpdate y componentWillUnmount ? Ampliemos nuestra función sin estado anterior:
import React from "react";
function MyFunc(props) {
const [bar setBar] = React.useState(null);
React.useEffect(() => {
console.log("componentDidMount");
return () => {
console.log("componentDidUnmount")
}
}, []);
React.useEffect(() => {
console.log("componentDidUpdate when 'bar' changes");
}, [bar]);
React.useEffect(() => {
console.log("componentDidUpdate when 'props.foo' changes");
}, [props.foo]);
return <div>Hey!</div>
}
Otra cosa que agregamos a este ejemplo, React.useState, un gancho de estado, está fuera del alcance de este tutorial, ¡pero obtenga más información al respecto aquí !
Es genial que podamos administrar el estado de un componente, así como con los métodos de ciclo de vida anteriores. Entre la simplicidad y la reutilización de las funciones sin estado y la función React.useEffect, tenemos disponible un nuevo paradigma: funciones con estado reutilizables, o más comúnmente llamadas: ganchos personalizados .
Un lector experto como usted probablemente notó que con useEffect, no podemos acceder a la propiedad prevProps o prevState como antes. ¡No temáis! Lea la solución para eso aquí . La razón por la que esta solución funciona es porque React.useRef no activa la repetición del componente. Además, useEffect sin dependencias se activa cada vez que se vuelve a renderizar el componente, independientemente del cambio de estado que lo haya activado.
Realmente no hay mejor ejemplo base para un gancho personalizado que el que React comparte en su documentación oficial aquí . Comencemos por la parte inferior del ejemplo y avancemos:
function FriendListItem(props) {
const isOnline = useFriendStatus(props.friend.id);
return (
<li style={{ color: isOnline ? 'green' : 'black' }}>
{props.friend.name}
</li>
);
}
import React, { useState, useEffect } from 'react';
function useFriendStatus(friendID) {
const [isOnline, setIsOnline] = useState(null);
function handleStatusChange(status) {
setIsOnline(status.isOnline);
}
useEffect(() => {
ChatAPI.subscribeToFriendStatus(friendID, handleStatusChange);
return () => {
ChatAPI.unsubscribeFromFriendStatus(friendID, handleStatusChange);
};
});
return isOnline;
}
En este tutorial, revisamos:
Introducción Un accidente cerebrovascular es una emergencia médica que puede afectar a cualquier persona en cualquier momento. Ocurre cuando se interrumpe el flujo de sangre a una parte del cerebro, lo que lleva a una pérdida repentina de la función cerebral.
Embárcate en un emocionante viaje de innovación y éxito mientras aprovechas el potencial sin explotar de estas sorprendentes plataformas sin código. Permítame compartir con usted una historia sobre Sapna, una notable mujer empresaria.
Por Alyson Lee, asesora de gestión de asuntos gubernamentales El proceso de asignaciones anuales del gobierno federal es fundamental para nuestros esfuerzos por financiar la eliminación de dióxido de carbono (CDR). Cada año, Carbon180 envía solicitudes a varias oficinas del Congreso para ayudar a guiar hacia dónde fluirán los dólares del próximo año.
“Él me protegerá cuando esté en peligro. Me esconderá en su tienda.
Si queremos seguir prosperando en este planeta, vamos a tener que tener conversaciones peligrosas. Aquellas que desafían lo que hemos hecho, lo que estamos haciendo y lo que actualmente vamos a seguir haciendo (o planeamos hacer).
La semana pasada noté un comunicado de prensa, enviado a través de PressGazette (un sitio web de noticias de los medios británicos). El artículo anunciaba que Acast, la empresa de publicidad y alojamiento de podcasts de Scandi, lideraría un consorcio de editores "probablemente los más influyentes" en podcasting.