Что такое хук

Хуки — это функции, которые позволяют "подключаться" к состоянию и жизненному циклу компонентов React из функциональных компонентов. Введение их предоставило мощный инструментарий для работы со состоянием, эффектами и другими возможностями React без необходимости преобразования функциональных компонентов в классы.

Основные хуки:

  • useState: Позволяет функциональным компонентам иметь состояние.
  const [count, setCount] = useState(0);
  • useEffect: Позволяет выполнять побочные эффекты в компоненте, такие как обращения к API, подписки и т.д. Это аналог методов жизненного цикла `componentDidMount`, `componentDidUpdate`, и `componentWillUnmount` в классовых компонентах.
  useEffect(() => {
    document.title = `Вы нажали ${count} раз`;
  }, [count]); // Эффект использует переменную состояния count
  • useContext: Позволяет получить доступ к данным из контекста. Это упрощает передачу данных через дерево компонентов без необходимости передавать props на каждом уровне.
  const value = useContext(MyContext);
  • useReducer: Предоставляет альтернативный способ управления состоянием, основанный на паттерне редьюсер. Это особенно полезно для управления сложным состоянием.
  const [state, dispatch] = useReducer(reducer, initialState);
  • useCallback: Возвращает мемоизированный колбэк, который изменяется только если изменяются зависимости. Это помогает предотвратить ненужные ререндеры.
  const memoizedCallback = useCallback(() => {
    doSomething(a, b);
  }, [a, b]);
  • useMemo: Мемоизирует вычисляемое значение. Это помогает избежать ненужных вычислений при каждом рендере.
  const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
  • useRef: Возвращает изменяемый ref объект, который может быть использован для хранения значения на протяжении всего жизненного цикла компонента.
  const myRef = useRef(initialValue);

Зачем они нужны:

Хуки были введены для решения нескольких проблем:

  • Упрощение переиспользования логики состояния между компонентами без необходимости создавать высшие порядковые компоненты или рендер-пропсы.
  • Использование состояния и других возможностей React без написания классов.
  • Организация логики внутри компонента по принципу использования, а не жизненного цикла.

Хуки предлагают более простой и мощный способ создания компонентов, делая код более читабельным и легко поддерживаемым.

Feb. 26, 2024, easyoffer