Здравствуйте, я Тушар, веб-разработчик полного цикла, страстно увлеченный созданием красивых и функциональных веб-приложений. У меня есть опыт работы с различными технологиями, от интерфейсных фреймворков, таких как React, до внутренних языков, таких как Node.js. Мне нравится решать сложные проблемы и превращать их в элегантные решения, и я считаю, что хороший код облегчает жизнь следующему разработчику. Я рад поделиться своими мыслями, опытом и знаниями с сообществом, и я надеюсь, что вы найдете мой блог информативным и полезным.
Пользовательские хуки — это способ извлечения и повторного использования логики в компонентах React. Они позволяют разработчикам писать логику, которую можно использовать в нескольких компонентах, и упрощают поддержку и масштабирование приложений. В этом блоге мы более подробно рассмотрим пользовательские хуки и то, как их можно использовать в React.
Предоставленный код представляет собой настраиваемый хук с именем useFetchWithAuth
. Этот хук отвечает за создание HTTP-запросов с заголовками аутентификации и возврат данных ответа вместе со статусом загрузки. Хук использует хук useState
для управления состоянием данных ответа и статусом загрузки.
Функция request
является основной логикой хука. Он делает запрос к указанному URL-адресу, используя библиотеку axios, и устанавливает статус загрузки в true перед запросом и в false после завершения запроса. Если запрос выполнен успешно, устанавливаются данные ответа и отображается сообщение об успешном выполнении с использованием библиотеки всплывающих уведомлений. В случае сбоя запроса отображается сообщение об ошибке с использованием библиотеки тостов.
В функции request
axios принимает заголовки с помощью функции authHeaders, которая возвращает заголовок Authorization
с Bearer
и token
из локального хранилища.
Теперь, когда вы поняли логику хука useFetchWithAuth, пришло время его реализовать.
Предоставленный код является реализацией пользовательского хука useFetchWithAuth
. Ловушка вызывается путем деструктурирования возвращаемых значений в переменные request
, isLoading
и data
.
Затем хук useEffect
используется для выполнения запроса GET к URL-адресу '/tasks?limit=6&sortBy=createdAt_desc'. Хук useEffect
срабатывает каждый раз, когда изменяется значение TaskChange
. Это позволяет компоненту повторно отображать и делать новый запрос всякий раз, когда значение TaskChange
изменяется, в моем случае вы можете соответствующим образом установить массив зависимостей.
Затем функция request
из хука useFetchWithAuth
вызывается внутри хука useEffect
для выполнения запроса GET. Функция request
принимает четыре параметра: URL-адрес запроса, тип запроса (в данном случае «получить»), данные, которые должны быть отправлены вместе с запросом, и сообщение об успешном выполнении, которое будет отображаться в случае успешного выполнения запроса.
Наконец, оператор return
внутри хука useEffect
используется для очистки подписки. Это гарантирует, что хук useEffect
не сработает после размонтирования компонента, что может предотвратить утечку памяти и повысить общую производительность приложения.
Вот пример кода для выполнения POST-запроса с использованием хука useFetchWithAuth
:
Затем определяется функция submitHandler
, которая отправляет POST-запрос к URL-адресу «/tasks» при срабатывании. Функция request
из хука useFetchWithAuth
вызывается с URL-адресом, типом запроса, данными для отправки и сообщением об успешном завершении в качестве параметров.
После выполнения запроса значение description
сбрасывается, а значение TaskChange
переключается, чтобы инициировать повторную визуализацию компонента.
Вывод:
В заключение, пользовательские хуки — это мощный способ извлечения и повторного использования логики в компонентах React, а хук useFetchWithAuth
служит примером того, как этого можно достичь. Используя настраиваемые хуки, разработчики могут уменьшить дублирование кода, улучшить его читаемость и упростить обслуживание и масштабирование своих приложений.
Я надеюсь, что эта статья помогла вам лучше понять пользовательские хуки в React и то, как хук useFetchWithAuth
можно использовать для вызовов API. Если у вас есть какие-либо вопросы или комментарии, не стесняйтесь обращаться ко мне через findtushar.me
Кроме того, если вы хотите увидеть больше моих работ или следить за моими проектами, вы можете найти меня на GitHub по адресу github.com/Tushar-Chavan14. Я постоянно работаю над новыми проектами и экспериментирую с новыми технологиями, так что следите за обновлениями, чтобы не пропустить более захватывающий контент.