Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

1natsu172/react-use-event-listeners

Repository files navigation

Codecov

react-use-event-listeners

Handling the addEventListener(s) using the hooks.

Useful for listening to events that are not synthetic-events.


This hook is for one-EventTarget with multi event listeners, so not for multi-EventTargets with multi event listeners.

✨ Getting Started

with yarn

yarn add react-use-event-listeners

or

with npm

npm install react-use-event-listeners

πŸ’ Usage

example component is count-up button app

import { useEventListeners } from 'react-use-event-listeners'
const CountUpApp = () => {
 const eventTargetRef = useRef(null)
 
 const countUp = useCallback(() => {
 setCount(prev => prev + 1)
 }, [])
 const handleOver = useCallback(() => {
 console.log('user will click count-up button')
 }, [])
 useEventListeners(
 {
 eventTarget: eventTargetRef.current,
 listeners: [
 ['click', countUp],
 ['pointerover', handleOver],
 ]
 },
 [eventTargetRef.current]
 )
 return (
 <>
 <div className="displayCount">{count}</div>
 <div className="countUpButton" ref={eventTargetRef}>
 Click then count up
 </div>
 </>
 )
}

πŸ”₯ APIs

useEventListeners(values, dependencyList)

name require type default decstiption
values βœ“ Object - See below
dependencyList - Array - About React hooks 2nd argument array(DependencyList)

About the 1st argument object(values)

name require type default decstiption
eventTarget - EventTarget - MDN - EventTarget
listeners βœ“ Array - README - register-event-listeners
What's listeners?

The listeners are the same format as dependency module register-event-listeners. Please refer to that document for details.

https://github.com/1natsu172/register-event-listeners#the-element-of-the-array

So, the 1st argument should be like this.
{
 eventTarget: eventTargetRef.current,
 listeners:[
 ['touchstart', onTouchStart, {capture: true, once: true}],
 ['touchmove', onTouchMove, { passive: false }],
 ['touchend', onEnd],
 ['touchcancel', onEnd]
 ]
}

πŸ’š Running the tests

with Jest.

yarn test

or

npm run test

🏷 Versioning

Use SemVer for versioning. For the versions available, see the tags on this repository.

©️ License

MIT Β© 1natsu172

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /