Это небольшой туториал о том, как создать собственный хук React.

Перехватчики React сейчас более популярны с функциональными компонентами и позволяют использовать состояние и жизненные циклы React. Можно преобразовать бизнес-логику компонента в настраиваемый хук. Это сделает ваш код более чистым и управляемым. Посмотрим как.

Есть два основных крючка React:

  • useState
  • useEffect

useState Hook

Домашняя страница useState в React используется для создания состояния в функциональном компоненте. React сохранит это состояние между повторными рендерингами. useState возвращает пару: текущее значение состояния и функцию, которая позволяет вам его обновлять. Вы можете вызвать эту функцию из обработчика событий или где-нибудь еще. Он похож на this.setState в классе, за исключением того, что он не объединяет старое и новое состояние.

useEffect

Перехватчик эффекта добавляет возможность обрабатывать побочные эффекты и имитировать жизненный цикл реакции аналогично компонентам на основе классов. Он служит той же цели, что и componentDidMount, componentDidUpdate и componentWillUnmount в классах React, но объединен в единый API. Когда вы вызываете useEffect, вы указываете React запускать вашу функцию «эффекта» после сброса изменений в DOM.

Создайте свой собственный крючок 💡

Мы создадим настраиваемую ловушку для использования хранилищ браузера с возможностью использования localStorage и sessionStorage для этого руководства.

useBrowserStorage

Если имя функции начинается с «использования», это называется ловушкой. Соглашение об именах useBrowserStorage - это то, как подключаемый модуль линтера может находить ошибки в коде с помощью хуков.

Настраивать

Самый быстрый способ начать - использовать шаблон. Так что вам не нужно беспокоиться о добавлении зависимостей и инструментов сборки. Мы будем использовать пакет create-react-hook NPM для создания шаблона проекта.

Https://www.npmjs.com/package/create-react-hook

npx create-react-hook <hook-name>

После выполнения этой команды ответит на некоторые вопросы, и CLI настроит проект.

Напишите свою логику

Теперь вы зашли так далеко, давайте напишем нашу useBrowserStorage логику ловушки. Если вы настроили проект с помощью create-react-hook CLI, то в src/index.(jsx, tsx) есть файл входа, в котором есть пример кода для написания ловушки. Заменим.

export const useBrowserStorage = () => {
  // logic will go here
}

Мы предоставим один вариант {type} для переключения между localStorage и sessionStorage. Значение по умолчанию для типа localStorage.

const STORAGE_TYPES = ['localStorage', 'sessionStorage'];
export const useBrowserStorage = (options = {}) => {
  const type = (STORAGE_TYPES.includes(options.type) && options.type) || 'localStorage';
}

Теперь давайте проверим, поддерживает ли браузер хранилища. Также будет проверяться, запущен ли наш хук на стороне сервера, тогда он не будет генерировать никаких ошибок.

Наконец объединены в один файл

Опубликовать в NPM

Когда мы будем готовы с нашим хуком, давайте опубликуем его в пакетах NPM.

Войдите в интерфейс командной строки NPM. Введите свое имя пользователя, пароль и адрес электронной почты для входа.

npm login

После успешного входа в систему давайте запустим эту команду, чтобы опубликовать

npm publish

Вот и все!!!

Совет: если вы хотите снова опубликовать свой пакет с новыми изменениями или исправлениями ошибок. Затем вам необходимо обновить версию вашего пакета. Вы можете вручную обновить версию пакета в package.json файл или запустить эту команду:

npm version patch -m "message"

Читать дальше для команды npm version

Вот полный исходный код useBrowserStorage





Надеюсь, вам понравился этот урок. Спасибо за чтение!!!