useEventListener
#
DescriptionSuppose you would like to track the mouse position. You could subscribe to mouse move events like this:
Old implementation (click to expand)
import { useEffect, useState } from 'react';
const useMouseMove = () => { const [coords, setCoords] = useState<[number, number]>([0, 0]);
useEffect(() => { const handler = ({ clientX, clientY }) => { setCoords([clientX, clientY]); }; window.addEventListener('mousemove', handler); return () => { window.removeEventListener('mousemove', handler); }; }, []);
return coords;};
export default useMouseMove;
We have written our own useEffect
to manage the events. But this could be repetitive and tedious to do.
useEventListener
abstracts this away: you only need to care about the event name and the handler function.
#
Usageimport { useEventListener } from '@springtree/eva-suite-react-hooks';
const useMouseMove = () => { const [coords, setCoords] = useState([0, 0]);
useEventListener('mousemove', ({ clientX, clientY }) => { setCoords([clientX, clientY]); });
return coords;};
export default useMouseMove;