useEventListener
Description#
Suppose 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.
Usage#
import { 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;