Хуки React — это мощная функция, представленная в React 16.8, которая позволяет нам использовать состояние и другие функции React в функциональных компонентах. Они могут помочь нам сохранить наш код чистым и модульным, извлекая логику в повторно используемые части.
Одним из наиболее распространенных применений пользовательских хуков является инкапсуляция функций, которые используются в нескольких компонентах. В этом руководстве мы рассмотрим, как создавать собственные хуки React и как использовать их в наших компонентах.
Создание простого пользовательского хука
Давайте начнем с простого примера пользовательского хука, который управляет счетчиком. Этот хук будет поддерживать состояние счетчика и предоставлять функции для его увеличения и уменьшения.
Во-первых, давайте создадим новый файл для нашего хука, useCounter.tsx
:
Здесь мы используем хук useState
для создания переменной состояния для нашего счетчика, а хук useCounter
принимает начальное значение в качестве аргумента. Функции increment
и decrement
просто обновляют счетчик, добавляя или вычитая 1.
Теперь мы можем использовать этот пользовательский хук в наших компонентах следующим образом:
Здесь мы видим, что мы используем хук useCounter
для создания нашего состояния счетчика и функций увеличения/уменьшения, а затем рендерим состояние и кнопки в нашем компоненте.
Использование Axios с пользовательскими хуками
Еще один распространенный вариант использования пользовательских хуков — выполнение вызовов API с помощью Axios. Давайте создадим новый хук, который извлекает данные из конечной точки API и возвращает данные ответа. Если вы новичок в разработке интерфейса, вот статья, в которой обсуждаются преимущества Axios по сравнению со встроенным API выборки.
Во-первых, давайте установим Axios:
npm install axios -----or----- yarn add axios
Далее давайте создадим наш пользовательский хук useApi.tsx
:
Здесь мы используем хук useState
для управления состоянием данных ответов нашего API, состояния загрузки и ошибок. Хук useApi
принимает URL-адрес и параметры Axios в качестве аргументов и использует axios
для вызова API и соответствующего обновления состояния.
Здесь мы импортируем хук useApi
из нашего файла useApi.ts
и вызываем его с конечной точкой, к которой мы хотим попасть, и методом HTTP, который мы хотим использовать. Хук возвращает объект, содержащий текущее состояние вызова API, а также функцию callApi
, которую мы можем использовать для запуска вызова.
Затем мы создаем функцию handleClick
, которая вызывает callApi
при нажатии кнопки и условно визуализирует загрузку, данные и состояния ошибок на основе текущего состояния вызова API.
Вот и все! С помощью этого простого пользовательского хука мы можем легко обрабатывать вызовы API во всем нашем приложении.
Структура файла для нашего пользовательского хука:
src/ |- hooks/ | |- useApi.ts |- components/ |- MyComponent.tsx
Я надеюсь, что это дало вам представление о том, насколько мощными и гибкими могут быть пользовательские хуки в приложении React. Удачного кодирования!