UNPKG

@qtpy/use-event

Version:

1. [Параметры](#параметры) 2. [Пример использования](#пример-использования) 3. [Особенности](#особенности) 4. [Безопасность](#безопасность)

55 lines (40 loc) 3.89 kB
# `useEvent` - обработчик событий ## Содержание 1. [Параметры](#параметры) 2. [Пример использования](#пример-использования) 3. [Особенности](#особенности) 4. [Безопасность](#безопасность) Хук `useEvent` регистрирует обработчик события при монтировании компонента и автоматически удаляет его при размонтировании или изменении зависимостей. Он также предоставляет функцию `removeListener`, которую можно вызвать вручную внутри обработчика. ## Параметры | Параметр | Тип | Описание | | | ---------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | `event` | `string` | Название события, например `"click"`, `"keydown"`, `"scroll"` и т.д. | | | `listener` | `(event: Event, removeListener: () => void) => void` | Колбэк, вызываемый при срабатывании события. Получает объект события и функцию удаления. | | | `options` | `boolean \| AddEventListenerOptions` | (Необязательно) Опции для `addEventListener`. | | | `target` | \`EventTarget \| React.RefObject\<EventTarget | null>\` | (Необязательно) Цель, к которой привязать слушатель. По умолчанию — `window`. | | `deps` | `React.DependencyList` | (Необязательно) Зависимости, при изменении которых перерегистрируется обработчик. | | ## Пример использования ```tsx import React, { useRef } from 'react'; import useEvent from '@qtpy/use-event'; function App() { const divRef = useRef<HTMLDivElement>(null); useEvent( 'click', (e, remove) => { console.log('Clicked!', e); // Можно вручную удалить обработчик: // remove(); }, false, divRef ); return <div ref={divRef}>Нажми на меня</div>; } ``` ## Особенности * Поддерживает как прямые DOM-объекты, так и `ref`-объекты. * Автоматически удаляет обработчик при размонтировании. * Предоставляет внутри слушателя возможность самостоятельно удалить обработчик вызовом `removeListener()`. ## Безопасность Хук корректно обрабатывает случаи, когда `target` недоступен (например, `ref.current === null`), и не пытается регистрировать обработчик.