mirror of
https://github.com/nextui-org/nextui.git
synced 2025-12-08 19:26:11 +00:00
33 lines
768 B
TypeScript
33 lines
768 B
TypeScript
import {useState, useCallback, useEffect} from "react";
|
|
|
|
export const useMediaQuery = (width: number): boolean => {
|
|
const [targetReached, setTargetReached] = useState(false);
|
|
|
|
const updateTarget = useCallback((e: MediaQueryListEvent) => {
|
|
if (e.matches) {
|
|
setTargetReached(true);
|
|
} else {
|
|
setTargetReached(false);
|
|
}
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
const media = window.matchMedia(`(max-width: ${width}px)`);
|
|
|
|
media.addListener(updateTarget);
|
|
|
|
// Check on mount (callback is not called until a change occurs)
|
|
if (media.matches) {
|
|
setTargetReached(true);
|
|
}
|
|
|
|
return () => media.removeListener(updateTarget);
|
|
}, []);
|
|
|
|
return targetReached;
|
|
};
|
|
|
|
export const useIsMobile = () => {
|
|
return useMediaQuery(650);
|
|
};
|