Files
ai-agent/web/hooks/use-lg-media.ts
T

26 lines
702 B
TypeScript
Raw Normal View History

2026-04-09 10:01:23 +08:00
"use client";
import { useSyncExternalStore } from "react";
/** 与 Tailwind 默认 `lg` 断点一致(1024px */
const LG_MEDIA_QUERY = "(min-width: 1024px)";
function subscribe(onStoreChange: () => void) {
const mq = window.matchMedia(LG_MEDIA_QUERY);
mq.addEventListener("change", onStoreChange);
return () => mq.removeEventListener("change", onStoreChange);
}
function getSnapshot() {
return window.matchMedia(LG_MEDIA_QUERY).matches;
}
function getServerSnapshot() {
return false;
}
/** 仅客户端在 lg 及以上为 trueSSR 恒为 false,与 mobile-first 一致 */
export function useIsLgUp() {
return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
}