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

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

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

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

Спасибо.

https://codesandbox.io/s/reverent-gareth-wqn1z?fil...
  • Вопрос задан
  • 726 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • ProductStar
    Разработка на React
    6 недель
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Решения вопроса 1
@abberati
frontend-разработчик
У вас две ошибки
Первая — внутри эффекта вы добавляете обработчик и всё. Обработчик будет вызван и изменит значение только при ресайзе.
Вторая —нарушено правило useEffect про зависимости, isMobile замыкается.

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

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

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

Похожие вопросы
от 250 000 до 300 000 ₽
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽