useMediaQuery

Реактивный хук для медиазапросов с синтаксисом в стиле Tailwind.

React-хук, который подписывается на CSS-медиазапрос и возвращает признак его соответствия. Построен на useSyncExternalStore для безопасности при SSR и совместимости с конкурентным режимом.

Установка

Использование

Сокращённая запись брейкпоинтов

Используйте синтаксис вариантов Tailwind для сопоставления брейкпоинтов. TypeScript предоставляет полное автодополнение.

Объектный API

Используйте объектную форму, когда нужно определить тип указателя или задать произвольные значения в пикселях.

Произвольный медиазапрос

Передайте любую корректную строку CSS-медиазапроса как запасной вариант.

Условный рендеринг

Основной сценарий использования — монтировать один компонент вместо другого в зависимости от области просмотра.

Брейкпоинты

Хук содержит статическую карту брейкпоинтов, которая должна совпадать с вашей конфигурацией Tailwind. Значения по умолчанию:

Если вы переопределяете брейкпоинты в @theme своего Tailwind CSS, обновите соответствующим образом константу BREAKPOINTS в хуке.

API

Строковые запросы

Объектные запросы

Возвращаемое значение

Возвращает booleantrue, когда медиазапрос соответствует, иначе false. Во время SSR возвращает false.

Примеры

Измените размер области просмотра, чтобы увидеть обновление значений в реальном времени.

Min-width (брейкпоинт и выше)

  • useMediaQuery("sm")
    ≥ 640pxfalse
  • useMediaQuery("md")
    ≥ 800pxfalse
  • useMediaQuery("lg")
    ≥ 1024pxfalse
  • useMediaQuery("xl")
    ≥ 1280pxfalse
  • useMediaQuery("2xl")
    ≥ 1536pxfalse

Max-width (ниже брейкпоинта)

  • useMediaQuery("max-sm")
    < 640pxfalse
  • useMediaQuery("max-md")
    < 800pxfalse
  • useMediaQuery("max-lg")
    < 1024pxfalse

Диапазоны

  • useMediaQuery("sm:max-md")
    640 - 799pxfalse
  • useMediaQuery("md:max-lg")
    800 - 1023pxfalse
  • useMediaQuery("lg:max-xl")
    1024 - 1279pxfalse

Устройство и предпочтения

  • useMediaQuery({ pointer: "coarse" })
    сенсорный вводfalse
  • useMediaQuery({ pointer: "fine" })
    мышьfalse
  • useMediaQuery("(prefers-color-scheme: dark)")
    false
  • useMediaQuery("(prefers-reduced-motion: reduce)")
    false

Удобный экспорт

Хук также экспортирует useIsMobile для обратной совместимости с паттерном use-mobile из shadcn:

Oracul DS

Built for the future of AI-driven interfaces.