169 похожих чатов

Вопрос. У меня подключен линтер. Почему при использовании useEffect, или

как в данном примере useCallback он просит поместить в массив зависимостей функции. Это нормально? Если да, то для чего это вообще нужно? Не хочется во всем проекте городить
// eslint-disable-next-line react-hooks/exhaustive-deps

14 ответов

8 просмотров

если удалишь пустой массив как зависимость, то эта ошибка останется?

Антон- Автор вопроса
Александр Плетнев
если удалишь пустой массив как зависимость, то эта...

Нет, ошибки не будет. Но мне интересно, почему он считает, что нужно добавить функции, которые используются

Да, я такое уже видела. Он требует все изменяемые данные чтобы записались в зависимости

The issue is that upon each render cycle, function is redefined. React uses shallow object comparison to determine if a value updated or not. Each render cycle function has a different reference https://stackoverflow.com/questions/62601538/passing-a-function-in-the-useeffect-dependency-array-causes-infinite-loop

Антон- Автор вопроса
Антон
Немного мимо

вопрос был в том почему линтер просит поместить в массив функцию, в ссылке есть ответ

Антон- Автор вопроса
𝚕𝚞𝚜𝚝
вопрос был в том почему линтер просит поместить в ...

В этом вопросе разбирается, почему создается бесконечный цикл при передаче функций в массив зависимостей useEffect

Антон
В этом вопросе разбирается, почему создается беско...

ну я ещё специально выделил текст с ответом на твой вопрос, чтоб было понятно к чему ссылка

Антон- Автор вопроса
𝚕𝚞𝚜𝚝
ну я ещё специально выделил текст с ответом на тво...

Предположим, в моем случае сохраняется ссылка на диспатч данных в useState. Что-то должно поменяться, если этого сохранения не будет?

если не сохраняется, то на каждый рендер создаётся новая ссылка на функцию, соответственно эффект будет каждый раз запускаться

Антон- Автор вопроса
𝚕𝚞𝚜𝚝
если не сохраняется, то на каждый рендер создаётся...

Ты может путаешь поведение, когда в массиве зависимостей само значение из useState? Иначе почему мы во всех массивах зависимостей не указываем эти функции для изменения стейта?

Антон
Ты может путаешь поведение, когда в массиве зависи...

потому что нам не нужно реагировать на переопределение ссылки на функцию эффект как и usecallback/usememo в зависимостях ожидает все значения из пропсов/стейтов/функций которые используются в колбэке, когда ты туда ничего не передаешь линтер предупреждает тебя что что-то может пойти не так, ну или выводит ошибку, зависит от настроек

Антон
Ты может путаешь поведение, когда в массиве зависи...

дока ESLint is not smart enough to understand the context everytime, it's a set of objective measurements. If you want to run something once, guaranteed, use an empty dependency array and suppress the warning. It's a warning, not an error. https://stackoverflow.com/questions/73296654/is-an-empty-dependency-array-for-react-useeffect-not-permissible

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
43
How to create an OS in C? what to study?
Linus
18
читать файл максимально быстро? странный вопрос))
zamtmn
53
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
@HemulGM Параметры у AddStream поменялись? Несостыковка какая-то
Катерина Свиридова
12
Подскажите, есть какие-то события создания/уничтожения у TFrame по типу TForm (OnCreate и OnClose/OnDestroy) ? Как отловить создание TFrame и "перед" уничтожением. На Tframe р...
Денис
8
а чем хуже?
Alexey Kulakov
10
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
1
Всем привет, передавал ли кто-нибудь File с рендер процесса в main? Просто виснет js. Где именно я без понятия. Не отрабатывают никакие логи. Как только я передаю обычный масс...
Ilya Ilya
4
Карта сайта