Проверяет понимание правил хуков React, в частности запрет на вызов хуков после условного return.
React использует порядок вызова хуков для сопоставления состояния между рендерами. Если хук вызывается после условного return, то при разных условиях рендера количество и порядок хуков могут меняться. Это нарушает внутренние ожидания React и вызывает ошибку.
function MyComponent({ flag }) {
if (flag) {
return null;
}
const [value, setValue] = useState(0); // Ошибка!
useEffect(() => {}, []);
return <div>{value}</div>;
}В этом примере, если flag равен true, компонент возвращает null и хуки не вызываются. При следующем рендере с flag = false React ожидает, что хуки будут вызваны в том же порядке, но их количество изменилось, что приводит к ошибке.
Все хуки должны вызываться на верхнем уровне компонента, до любых условных return. Условный return можно разместить после всех хуков или использовать условный рендеринг внутри JSX.
function MyComponent({ flag }) {
const [value, setValue] = useState(0);
useEffect(() => {}, []);
if (flag) {
return null;
}
return <div>{value}</div>;
}Соблюдение правил хуков гарантирует стабильность и предсказуемость работы компонентов. Всегда размещайте хуки до любых условных операторов, чтобы избежать ошибок времени выполнения.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию