Почему useEffect не срабатыает при перезагрузке страницы?

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

Отсюда 2 вопроса:
1. Почему так происходит?
2. Как сделать так, чтобы при перезагрузке страницы определялась ширина экрана и устанавливалось соответсвующее состояние?

Спасибо.

https://codesandbox.io/s/reverent-gareth-wqn1z?fil...
  • Вопрос задан
  • 690 просмотров
Решения вопроса 1
@abberati
frontend-разработчик
У вас две ошибки
Первая — внутри эффекта вы добавляете обработчик и всё. Обработчик будет вызван и изменит значение только при ресайзе.
Вторая —нарушено правило useEffect про зависимости, isMobile замыкается.

Посмотрите на готовое решение, сравните со своим, почитайте статью про useEffect

Готовое решение
Статья
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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