Con React 16.8.6 (fue bueno en la versión anterior 16.8.3), obtengo este error cuando intento evitar un bucle infinito en una solicitud de recuperación
./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
No he podido encontrar una solución que detenga el ciclo infinito. Quiero alejarme del uso useReducer()
. Encontré esta discusión https://github.com/facebook/react/issues/14920 donde una posible solución es You can always // eslint-disable-next-line react-hooks/exhaustive-deps if you think you know what you're doing.
que no estoy seguro de lo que estoy haciendo, así que todavía no he intentado implementarlo.
Tengo esta configuración actual React hook useEffect se ejecuta continuamente para siempre / bucle infinito y el único comentario es sobre el useCallback()
que no estoy familiarizado.
Cómo estoy usando actualmente useEffect()
(que solo quiero ejecutar una vez al principio, similar a 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()
. Entonces, por ejemplo:const fetchBusinesses= useCallback(() => { ... }, [...])
yuseEffect()
se vería así:useEffect(() => { fetchBusinesses(); }, [fetchBusinesses]);