Ответ
React предоставляет несколько встроенных хуков:
useState - управление состоянием:
const [count, setCount] = useState(0);
useEffect - side effects:
useEffect(() => {
document.title = `Count: ${count}`;
}, [count]);
useContext - доступ к контексту:
const theme = useContext(ThemeContext);
useReducer - сложное состояние:
const [state, dispatch] = useReducer(reducer, initialState);
useMemo/useCallback - оптимизация:
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
const memoizedCallback = useCallback(() => doSomething(a, b), [a, b]);
useRef - ссылки и мутируемые значения:
const inputRef = useRef(null);
useLayoutEffect - аналогичен useEffect, но срабатывает синхронно после рендера, но до отрисовки в браузере.
Также есть хуки для работы с пользовательскими хуками и хуки для Suspense (экспериментальные).