Avec React 16.8.6 (c'était bien sur la version précédente 16.8.3), j'obtiens cette erreur lorsque je tente d'empêcher une boucle infinie sur une requête de récupération
./src/components/BusinessesList.js
Line 51: React Hook useEffect has a missing dependency: 'fetchBusinesses'.
Either include it or remove the dependency array react-hooks/exhaustive-deps
J'ai été incapable de trouver une solution qui arrête la boucle infinie. Je veux éviter d'utiliser useReducer()
. J'ai trouvé cette discussion https://github.com/facebook/react/issues/14920 où une solution possible est You can always // eslint-disable-next-line react-hooks/exhaustive-deps if you think you know what you're doing.
que je ne suis pas sûr de ce que je fais donc je n'ai pas encore essayé de l'implémenter.
J'ai cette configuration actuelle React hook useEffect fonctionne en continu pour toujours / boucle infinie et le seul commentaire est useCallback()
que je ne connais pas.
Comment j'utilise actuellement useEffect()
(que je ne veux exécuter qu'une seule fois au début, similaire à componentDidMount()
)
useEffect(() => {
fetchBusinesses();
}, []);
const fetchBusinesses = () => {
return fetch("theURL", {method: "GET"}
)
.then(res => normalizeResponseErrors(res))
.then(res => {
return res.json();
})
.then(rcvdBusinesses => {
// some stuff
})
.catch(err => {
// some error handling
});
};
useCallback()
. Donc par exemple:const fetchBusinesses= useCallback(() => { ... }, [...])
etuseEffect()
cela ressemblerait à ceci:useEffect(() => { fetchBusinesses(); }, [fetchBusinesses]);