Com o React 16.8.6 (foi bom na versão anterior 16.8.3), recebo esse erro ao tentar impedir um loop infinito em uma solicitação de busca
./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
Não consegui encontrar uma solução que interrompa o loop infinito. Eu quero ficar longe de usar useReducer()
. Eu encontrei essa discussão em https://github.com/facebook/react/issues/14920, onde uma possível solução é You can always // eslint-disable-next-line react-hooks/exhaustive-deps if you think you know what you're doing.
não estar confiante no que estou fazendo, por isso ainda não tentei implementá-la.
Eu tenho essa configuração atual React hook useEffect é executado continuamente para sempre / loop infinito e o único comentário é sobre o useCallback()
qual eu não estou familiarizado.
Como estou usando no momento useEffect()
(que só quero executar uma vez no começo, semelhante 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()
. Assim, por exemplo:const fetchBusinesses= useCallback(() => { ... }, [...])
euseEffect()
ficaria assim:useEffect(() => { fetchBusinesses(); }, [fetchBusinesses]);