
Однажды вы проснулись со своим проектом в режиме разработки, вы поместили небольшой файл console.log в useEffect с нулевой зависимостью и ожидали, что он будет работать точно так же, как компонент класса, если бы вы разрабатывали метод жизненного цикла componentDidMount.
НЕПРАВИЛЬНО
В React 18 есть StrictMode, который вы можете включить или отключить во время разработки, который инкапсулирует все приложение.
Это означает, что он говорит React попытаться и как бы подделать переход страницы, который монтирует и размонтирует компонент. Фактического перехода нет, но это гарантирует, что ваши компоненты и ваше состояние устойчивы к странным проблемам с состоянием, которые могут возникнуть, если вы не очистите свои useEffects во время размонтирования.
Я написал об этом статью, в которой подробно рассказал об этом, если вам интересно узнать об этом больше. Ссылка здесь.
Если у вас есть какие-либо сомнения относительно извлечения внутри хука useEffect, вы должны проверить, что Дэн Абрамов ответил мне в твиттере, о чем я сообщил здесь.