Задать вопрос

Зачем передавать dispatch в хук useEffect?

Для чего передают dispatch в массив зависимостей useEffect, что это даёт ?

const dispatch = useDispatch()

useEffect(() => {...}, [dispatch])
  • Вопрос задан
  • 4211 просмотров
Подписаться 4 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • Академия Eduson
    React-разработчик
    2 месяца
    Далее
Решения вопроса 1
@Sun_Day
В основном чтобы пофиксить предупреждения от eslint. То же самое будет, если написать вот так

useEffect(() => { вызов dispatch }, [])

The dispatch function reference will be stable as long as the same store instance is being passed to the <Provider>. Normally, that store instance never changes in an application.

However, the React hooks lint rules do not know that dispatch should be stable, and will warn that the dispatch variable should be added to dependency arrays for useEffect and useCallback. The simplest solution is to do just that:


ссылка на документацию

В общем, правила линта не знают, что вы ссылаетесь на один и тот же экземпляр стора. Если ссылка не изменяется, то новый вызов useEffect происходить не должен. И поэтому предупреждает, что переменная должна быть добавлена в массив зависимостей.

Варианты:
1) Сделать то, что показано вами выше.
2) Отключить правило линтера в данном конкретном месте строчкой // eslint-disable-line
3) Отключить правило глобально в самом конфиге eslint. Гугл в помощь.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
miraage
@miraage
Старый прогер
eslint-plugin-react-hooks не знает, что данная функция не меняет свой референс.
Можно настроить через advanced configuration.

{
  "rules": {
    // ...
    "react-hooks/exhaustive-deps": ["warn", {
      "additionalHooks": "useDispatch|useOtherHookWhichWillDefinitelyNotChange"
    }]
  }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
от 250 000 до 300 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽