Exécutez des tâches asynchrones avec useEffect proprement et en toute sécurité
De l'appel d'une API pour définir un délai d'expiration, je suis sûr que vous vous êtes déjà demandé comment le faire correctement lors de l'utilisation du hook React useEffect. Si cela semble encore flou, alors cet article est pour vous. Sinon, vous pouvez au moins apprendre une approche différente pour faire le travail ou vous sentir plus confiant en le faisant.
Je vais vous présenter 3 façons de le faire en toute sécurité et en ordre. Mais d'abord, je veux montrer ce que vous ne devriez PAS faire.
N'effectuez pas la tâche asynchrone directement dans useEffect, mais encapsulez TOUJOURS votre tâche asynchrone dans une fonction et appelez-la uniquement à partir de useEffect.
Voici un exemple de ce que vous ne devriez PAS faire :
useEffect(async () => {
await getData();
},[]);
De plus, faire ce que cet exemple BAD a montré conduirait à une erreur React :
Les rappels d'effet sont synchrones pour éviter les conditions de concurrence.
Très bien, maintenant nous sommes en sécurité pour passer aux bonnes pratiques ⬇️
Si vous avez l'intention d'exécuter une tâche asynchrone, pour obtenir des données d'une API par exemple, et mettre à jour l'état de chargement de votre composant, vous devez définir la fonction à l'intérieur du crochet, puis l'appeler :
useEffect(() => {
async function getData() {
setLoading(false);
const reponse = await myApi.getSomeGoodData()
setLoading(true);
}
getData();
},[]);
Si vous envisagez de réutiliser la fonction asynchrone que vous avez définie, une bonne idée est de la définir dans le corps de votre composant fonctionnel, enveloppé par le useCallbackcrochet. Vérifiez-le:
const getData = useCallback(() => {
setLoading(false);
const reponse = await myApi.getSomeGoodData()
setLoading(true);
}, [])
useEffect(() => {
getData()
},[getData])
Les 2 exemples précédents étaient principalement axés sur la récupération des données et la mise à jour de l'état du composant. Celui-ci doit également montrer un scénario courant pour les tâches asynchrones à l'intérieur de useEffect qui définit un intervalle ou un délai d'attente.
L'astuce consiste à TOUJOURS effacer le délai d'expiration et l'intervalle définis dans le fichier useEffect.
useEffect(() => {
const timeout = setTimeout(() => {
// do something
}, 100)
return () => {
clearTimeout(timeout);
}
},[])
useEffect(() => {
const interval = setInterval(() => {
// do something
}, 100)
return () => {
clearInterval(interval);
}
},[])
Les exemples ci-dessus vous permettront de couvrir 99,99 % des situations asynchrones que vous pourriez rencontrer lors du développement de React. N'oubliez pas d'être conscient des dépendances d'effet. Si vous n'avez pas trouvé votre cas dans les exemples ci-dessous, laissez un commentaire et je l'examinerai.
Merci d'avoir lu
—-Fernando Abolafio
Lorsque vous faites une demande à facebook.com, votre ordinateur recherche le nom de domaine pour traduire ce nom de domaine en une adresse IP afin que votre ordinateur puisse établir cette connexion.
En 2022, je suis passé d'un rôle non technique à la cybersécurité. J'ai eu mon premier diplôme en langue allemande, je sais que vous êtes choqué et curieux de savoir comment j'ai pu réussir la transition, eh bien c'est juste arrivé.
Salut les cyber-amateurs ! Bienvenue à nouveau dans la série OSINT pour la chasse aux menaces. Dans le premier article, je vous ai donné un aperçu d'OSINT et de son importance dans la chasse aux menaces.
Introduction :Bienvenue, courageux lecteurs, dans un voyage qui nous emmènera dans les profondeurs les plus sombres de notre planète. Dans ce blog, nous plongeons dans le monde énigmatique de la fosse des Mariannes, découvrant ses secrets cachés et découvrant les vérités effrayantes qui se cachent sous sa surface.
Nous avons souvent du mal à mettre en œuvre ce que nous savons être bon pour nous. Qu'il s'agisse de dire à un proche que nous l'aimons ou de se rappeler de parler comme un pirate, il y aura toujours ceux qui prétendent qu'un jour, une semaine ou un mois d'événements ne sont pas nécessaires parce qu'ils font déjà ces choses.
Ce qui est vieux est à nouveau nouveau et ce qui était autrefois la chose brillante et scintillante semble maintenant terne. Je ne parle pas du retour des jeans JNCO parmi les enfants cool du centre-ville avec d'autres modes de la fin des années 1990.