W przypadku React 16.8.6 (było dobrze w poprzedniej wersji 16.8.3), pojawia się ten błąd, gdy próbuję zapobiec nieskończonej pętli w żądaniu pobierania
./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
Nie udało mi się znaleźć rozwiązania, które zatrzymałoby nieskończoną pętlę. Chcę trzymać się z daleka od używania useReducer()
. Znalazłem tę dyskusję https://github.com/facebook/react/issues/14920, gdzie możliwym rozwiązaniem jest You can always // eslint-disable-next-line react-hooks/exhaustive-deps if you think you know what you're doing.
brak pewności co do tego, co robię, więc jeszcze nie próbowałem go wdrożyć.
Mam tę bieżącą konfigurację React hook useEffect działa w sposób ciągły w nieskończoność / nieskończoną pętlę, a jedyny komentarz dotyczy tego, z useCallback()
którym nie jestem zaznajomiony.
Jak obecnie używam useEffect()
(które chcę uruchomić tylko raz na początku, podobnie jak 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()
. Na przykład:const fetchBusinesses= useCallback(() => { ... }, [...])
auseEffect()
wyglądałoby to tak:useEffect(() => { fetchBusinesses(); }, [fetchBusinesses]);