Загрузка...
Загрузка...
Хуки (Hooks) — это функции, которые позволяют использовать состояние и другие возможности React в функциональных компонентах.
Но чтобы React корректно отслеживал и вызывал хуки, нужно строго соблюдать правила их использования.
Нельзя вызывать хуки внутри условий, циклов или вложенных функций.
Плохо:
if (someCondition) {
const [count, setCount] = useState(0); // ошибка
}
**Хорошо:**
```tsx
const [count, setCount] = useState(0);
if (someCondition) {
// можно использовать count здесь
}
Почему? React полагается на порядок вызова хуков при каждом рендере. Если вы вызываете хук внутри условия — порядок может нарушиться.
Нельзя вызывать хуки в обычных функциях, обработчиках, условиях вне компонента.
Нельзя:
function doSomething() {
const [val, setVal] = useState(0); // ошибка
}
Можно:
function MyComponent() {
const [val, setVal] = useState(0); // правильно
return <p>{val}</p>;
}
Или внутри своего хука:
function useCustomLogic() {
const [state, setState] = useState(false);
return { state, setState };
}
Нельзя менять порядок хуков при разных условиях. Это приводит к неправильному сопоставлению значений
// Плохо
if (flag) {
useEffect(() => {}, []); // может сломаться при следующем рендере
}
eslint-plugin-react-hooks — он поможет отлавливать нарушения.if, for, switch, try/catch и любых вложенных функций.Важно:
Если нарушить правила использования хуков, React не сможет правильно отслеживать состояние, эффекты и другие внутренние данные. Это приведёт к ошибкам и непредсказуемому поведению.