Правила використання хуків у React
Хуки — це функції, які дозволяють використовувати стан та інші можливості React в функціональних компонентх.
Але для того, щоб React правильно відстежував та викликав хуки, ви повинні суворо дотримуватись правил їх використання.
Основні правила використання хуків
Викликайте хуки тільки на верхньому рівні
Ви не можете викликати хуки всередині умов, циклів або вкладених функцій.
Погано:
if (someCondition) {
const [count, setCount] = useState(0); // помилка
}Добре:
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 не зможе правильно відстежувати стан, ефекти та інші внутрішні дані. Це призведе до помилок та непередбачуваної поведінки.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.