Проверяет понимание того, как кастомные хуки переиспользуются между компонентами и почему каждый вызов создаёт независимое состояние.
Кастомный хук в React — это просто функция, имя которой начинается с use и которая внутри вызывает другие хуки. Ключевая идея: хук не хранит состояние сам по себе, он лишь описывает логику. Состояние создаётся в момент вызова хука внутри конкретного компонента, поэтому каждый компонент получает свою независимую копию.
Когда два компонента вызывают один и тот же хук, React создаёт для каждого из них отдельную ячейку состояния в его fiber-узле. Значения не пересекаются, даже если логика идентична.
function useCounter(initial = 0) {
const [count, setCount] = useState(initial);
const inc = () => setCount(c => c + 1);
return { count, inc };
}
function A() {
const { count, inc } = useCounter();
return <button onClick={inc}>A: {count}</button>;
}
function B() {
const { count, inc } = useCounter(10);
return <button onClick={inc}>B: {count}</button>;
}Клик по кнопке A увеличит только счётчик A, клик по B — только B. Это и есть изоляция состояния.
Если компонентам нужно разделять одни и те же данные, кастомный хук сам по себе не поможет. Варианты:
useContext — тогда хук читает общий контекст.const CounterCtx = createContext(null);
function useSharedCounter() {
return useContext(CounterCtx);
}
function Provider({ children }) {
const [count, setCount] = useState(0);
return (
<CounterCtx.Provider value={{ count, setCount }}>
{children}
</CounterCtx.Provider>
);
}Теперь все компоненты, вызывающие useSharedCounter, видят одно и то же значение.
use, иначе линтер не проверит правила.Итог: кастомный хук — это способ переиспользовать логику, а не состояние. Если нужна общая логика с изолированным состоянием — просто вызывайте хук в каждом компоненте. Если нужно общее состояние — поднимайте его выше или используйте контекст/стор.
Уровень
Рейтинг:
4
Сложность:
4
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию