React 16.8.6(以前のバージョン16.8.3では良かった)では、フェッチ要求で無限ループを回避しようとすると、このエラーが発生します
./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
私は無限ループを止める解決策を見つけることができませんでした。の使用を避けたいuseReducer()
。私はこの議論を見つけましたhttps://github.com/facebook/react/issues/14920可能な解決策はYou can always // eslint-disable-next-line react-hooks/exhaustive-deps if you think you know what you're doing.
私がやっていることに自信がないので、まだ実装しようとはしていません。
私はこの現在のセットアップを持っていますReactフックuseEffectは継続的に永久に/無限ループを実行し、唯一のコメントはuseCallback()
私がよく知らないものについてです。
私が現在どのように使用しているかuseEffect()
(これはと同様に最初に一度だけ実行したい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()
。ですから、例えば:const fetchBusinesses= useCallback(() => { ... }, [...])
とuseEffect()
、次のようになりますuseEffect(() => { fetchBusinesses(); }, [fetchBusinesses]);