From 206ad0c528f559fd31f983f9e6abab6ee26e09cd Mon Sep 17 00:00:00 2001 From: Markus Thielker <mail.markus.thielker@gmail.com> Date: Sun, 17 Mar 2024 00:42:01 +0100 Subject: [PATCH] N-FIN-33: create useMediaQuery hook --- src/lib/hooks/useMediaQuery.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/lib/hooks/useMediaQuery.ts diff --git a/src/lib/hooks/useMediaQuery.ts b/src/lib/hooks/useMediaQuery.ts new file mode 100644 index 0000000..0d7a61d --- /dev/null +++ b/src/lib/hooks/useMediaQuery.ts @@ -0,0 +1,16 @@ +import { useEffect, useMemo, useState } from 'react'; + +export function useMediaQuery(mq: string) { + + const mql = useMemo(() => matchMedia(mq), [mq]); + const [matches, setMatch] = useState(mql.matches); + + useEffect(() => { + const listener = (e: any) => setMatch(e.matches); + mql.addEventListener('change', listener); + + return () => mql.removeEventListener('change', listener); + }, [mq, mql]); + + return matches; +}