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