Event Handler
Event handlers can be used to handle and verify user input, user actions, and browser actions.
useToggle
Basically, what this hook does is that, it takes a parameter with value true or false and toggles that value to opposite. It's useful when we want to take some action into it's opposite action, for example: show and hide modal, show more/show less text, open/close side menu.
Usage
import React from 'react';
import useToggle from '@/hooks/event-handler/useToggle';
function App() {
// Call the hook which returns, current value and the toggler function
const [isTextChanged, setIsTextChanged] = useToggle();
return (
<button onClick={setIsTextChanged}>{isTextChanged ? 'Toggled' : 'Click to Toggle'}</button>
);
}
useEventListener
If you find yourself adding a lot of event listeners using useEffect
you might consider moving that logic to a custom hook. In the recipe below we create a useEventListener
hook that handles checking if addEventListener
is supported, adding the event listener, and removal on cleanup.
Usage
import { useState, useCallback } from 'react';
import useEventListener from '@/hooks/event-handler/useEventListener';
function App() {
// State for storing mouse coordinates
const [coords, setCoords] = useState({ x: 0, y: 0 });
// Event handler utilizing useCallback ...
// ... so that reference never changes.
const handler = useCallback(
({ clientX, clientY }) => {
// Update coordinates
setCoords({ x: clientX, y: clientY });
},
[setCoords]
);
// Add event listener using our hook
useEventListener("mousemove", handler);
return (
<h1>
The mouse position is ({coords.x}, {coords.y})
</h1>
);
}
Last updated
Was this helpful?