react-hooks-event-subscriber
Easily subscribe to events in React Hooks.
Usage
Consider the following code:
import React useEffect from 'react' const handleClick = { // Some logic to handle the click event.} const handleEscapeKey = { if ekey === 'Escape' // Some logic to handle the Escape key. } const MyComponent = return <>/* ... */</>
But, when the number of listeners go up, this becomes very hard to maintain. It is also error prone (Did I unsubscribe from keydown
or keydwon
? Did I even remember to unsubscribe?).
Instead you can do:
import React useEffect from 'react'import hookAllWindowListeners from 'react-hooks-event-subscribe' // Let handleClick and handleEscapeKey be same as above const MyComponent = return <>/* ... */</>
But really, you don't need to use this library exclusively with react. If you want to handle subscribing and unsubscribing to events with vanilla JS in a control manner, you could do something like this:
// Add event handlers on multiple eventsconst cleanupEventListeners = // ... Optionally, much later in the code, you can clean up
API
hookListener(target, eventName, eventHandler)
Returns a function that could be passed to the useEffect
hook and handles subscribing and unsubscribing. E.g.:
hookWindowListener(eventName, eventHandler)
A shorthand to subscribe to events emitted by window
. Above example in hookListener
can be rewritten as:
// No need to specify `window`
hookAllListeners(target, listenerMap)
Like hookListener
, but allows you to subscribe to multiple events by specifying event names and listeners as key-value pairs in an object literal. E.g.:
hookAllWindowListeners(listenerMap)
A shorthand to subscribe to multiple events emitted by window
. Above example in hookAllListeners
can be rewritten as:
// No need to specify `window`