В 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]);