what's wrong with my useEventListener ? Because each time I click on checkboxes I get this error :
useEventListener.js:14 Uncaught TypeError: callbackRef.current is not a function
at HTMLDocument.internalCallback (useEventListener.js:14:1)
useEventListener.js
import { useEffect, useRef } from 'react'
export default function useEventListener(eventType, callback) {
const callbackRef = useRef(callback)
useEffect(() => {
callbackRef.current = callback
})
useEffect(() => {
function internalCallback(e) {
return callbackRef.current(e)
}
document.addEventListener(eventType, internalCallback);
return () => document.removeEventListener(eventType, internalCallback)
}, [eventType])
}
I use my hook here:
export default function useQuery(query) {
const [queryList, setQueryList] = useState(null)
const [isMatch, setIsMatch] = useState(false)
useEffect(() => {
const list = window.matchMedia(query)
setQueryList(list)
setIsMatch(list.matches)
}, [query])
useEventListener('change', ((e) => setIsMatch(e.matches), queryList))
return isMatch
}