В 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()
. Я нашел это обсуждение [ESLint] Отзыв о правиле lint 'exhaustive-deps' #14920, где возможное решение You can always // eslint-disable-next-line react-hooks/exhaustive-deps if you think you know what you're doing.
Я не уверен в том, что делаю , поэтому я еще не пробовал его реализовывать.
У меня есть эта текущая настройка, React hook 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
});
};
Поскольку этот вопрос получает много трафика, вот ссылка на блог Дэна Абрамова, где он подробно объясняет useEffect и его зависимости.
И запрос функции, чтобы React улучшили useEffect API, чтобы избежать этой проблемы, четко отделив триггеры эффектов от зависимостей эффектов: предупреждение должно появляться миллион раз в день во всем мире, это должно как-то прекратиться.
Согласитесь, это совершенно неясно из официальной документации. Такая библиотека, как React, не нуждается в форумах и сообщениях в блогах, чтобы заставить ее работать.