Что такое хуки в React?
Хуки — это функция, добавленная в React v16.8, при помощи которой можно зацепиться за состояние и метод жизненного цикла React из функционального компонента. Хуки позволяют использовать все возможности React без написания классовых компонентов и решают множество, казалось бы, несвязанных между собой, проблем в React. Среди этих проблем можно выделить следующие:
- сложность повторного использования логики состояний между компонентами;
- громоздкие компоненты затрудняют понимание кода;
- классы усложняют разработку.
Какие же преимущества дает использование хуков?
- Применение хуков дает возможность извлечь логику состояния, а значит и использовать логику состояния, не затрагивая дерево компонентов;
- Один компонент при помощи хуков можно разбить на маленькие функции по их назначению, а не на основе методов жизненного цикла;
- Хуки позволяют использовать больше возможностей React без написания классов.
Хуки можно назвать своеобразным способом избежать изучения сложных функциональных или реактивных подходов.
Для лучшего понимания преимуществ этого способа следует рассмотреть подробнее основные хуки и привести несколько примеров.
useState
Начнем с useState — функция, которая вызывается чтобы наделить наш функциональный компонент внутренним состоянием. По своей сути она близка к this.setState в классах. Первым и единственным аргументом useState принимает начальное состояние. Возвращаемым значением useState будет пара значений: текущее состояние и функция, обновляющая его.
Пример:
Здесь происходит объявление переменой состояния и установка ее начального значения, для смены которого можно вызвать setCount.
useEffect
Следующая функция применяется для того, чтобы задать выполнение дополнительного кода после обновления DOM: с помощью хука эффекта useEffect возможно выполнять побочные эффекты из функционального компонента. В React-классах его аналогами являются сразу несколько функций: componentDidMount, componentDidUpdate и componentWillUnmount.
Пример:
После каждого рендера, после того, как React внесёт все изменения в DOM, данная функция-эффект будет вызвана.
useContext
Следующим основным хуком является useContext.
Контекст в React — это способ для компонента-потомка получить доступ к значению в родительском компоненте. Данная необходимость возникает довольно часто. И обычно она решается передачей props через компоненты, что не всегда удобно.
Данный хук позволяет делиться значениями через дерево компонентов, с любым компонентом, запрашивающим эти значения.
Простой пример:
В данном примере контекст создается с использованием функции React.createContext(). Context.Provider задействован в App компоненте, в нем устанавливается значение. Теперь любой компонент, которому нужно получить доступ к контексту сможет считать это значение.
useRef
Правила хуков
- Использовать хуки следует только на верхнем уровне.
- Вызывать хуки следует только из React-функций