Нормально ли это, что в режиме Strict-mode в React-приложении делается 2 запроса?

У меня есть приложение, где при открытии роута совершается запрос на сервер. Для сторы используется Mobx.
Нормально ли, что в режиме Strinct запрос совершается 2 раза?
  • Вопрос задан
  • 157 просмотров
Пригласить эксперта
Ответы на вопрос 2
black1277
@black1277
Вольный стрелок
Реакт придерживается концепции "чистых" функций. Т.е. таких функций, которые всегда дают одинаковый, предсказуемый результат при одинаковых входных параметрах. В режиме разработки, с включенным strict-mode реакт помогает выявить непредвиденные эффекты и состояния, возникающие в результате нарушения концепции, вызывая дважды все функции, которые он считает "чистыми". Как это работает?
Предположим, вы написали функцию, которая по сигналу "свет" - включает свет. Но если свет уже включен - функция его выключает. Вы довольны и счастливы - послали сигнал "свет" - свет включился, послали еще один сигнал "свет" - выключился. Но в режиме strict-mode - вы обнаружите, что свет не включается, потому что реакт шлет второй сигнал "свет", который выключает после первого сигнала! И опять, возникает вопрос - да зачем это нужно? А затем, что вы не можете предсказать результат действия сигнала "свет", не зная текущего состояния! Возникнет острая необходимость - включить свет, а вы не знаете - включен он сейчас или нет... Пошлете сигнал "свет", когда он включен - получите выключение.
Примерно такие варианты поведения выявляет strict-mode.
Ответ написан
Комментировать
gooseNjuice
@gooseNjuice
JavaScript Fullstack
В строгом режиме каждый элемент рендерится дважды. Собственно, поэтому и запрос у тебя дважды отправляется.
Но это только в dev-окружении, на продакшене так уже не будет
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы