Это специально, это часть React.StrictMode
(в частности, обнаружение неожиданных побочных эффектов ):
Строгий режим не может автоматически обнаружить побочные эффекты для вас, но это может помочь вам обнаружить их, сделав их немного более детерминированными c. Это делается путем намеренного двойного вызова следующих функций:
- Компонент класса
constructor
, render
и shouldComponentUpdate
Методы - Компонент класса stati c
getDerivedStateFromProps
method - Тела компонентов функций
- Функции средства обновления состояния (первый аргумент
setState
) - Функции, переданные
useState
, useMemo
или useReducer
Если вы удалите элемент StrictMode
из index.js
, вы увидите, что выход регистрируется только один раз:
ReactDOM.render(<App />, document.getElementById('root'));
Обратите внимание, что в строгом режиме это происходит только в разработке , а не в производстве.