Проверяет понимание поведения React.StrictMode в режиме разработки и его влияния на двойной вызов функций и эффектов.
React.StrictMode — это специальный компонент-обёртка, который включает дополнительные проверки в режиме разработки. Он не рендерит никакого DOM и не влияет на production-сборку, но в dev-режиме намеренно вызывает некоторые функции дважды, чтобы выявить небезопасные побочные эффекты.
function Counter() {
const [count, setCount] = useState(() => {
console.log('init'); // вызовется дважды в StrictMode
return 0;
});
useEffect(() => {
console.log('mount'); // mount - unmount - mount
return () => console.log('cleanup');
}, []);
return <button onClick={() => setCount(c => c + 1)}>{count}</button>;
}
Двойной вызов помогает обнаружить компоненты, которые не являются чистыми: например, мутируют внешние переменные, делают запросы прямо в теле рендера или не очищают подписки в useEffect. Если после двойного вызова поведение ломается — значит, код содержит скрытый побочный эффект.
Важно: StrictMode не удваивает обработчики событий (onClick и т.п.) и не влияет на production. Двойной вызов происходит только в dev-режиме и только для перечисленных выше случаев.
Итог: StrictMode стоит включать в разработке, чтобы раньше находить небезопасные побочные эффекты; в production он не создаёт двойных вызовов и не влияет на производительность.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию