useMediaQuery 🧪 媒体查询

使用 useMediaQuery 轻松检索媒体尺寸,结合组件的大小属性可以实现响应式 UI 。

⚠️ 不稳定的 API,可能会在未来的次要版本中进行重大更改。

使用

import { useMediaQuery } from 'rsuite';

const App = () => {
  const [isMobile, isDark, isLandscape] = useMediaQuery([
    '(max-width: 700px)',
    '(prefers-color-scheme: dark)',
    '(orientation:landscape)'
  ]);

  return <div>{isMobile ? 'Mobile' : 'Desktop'}</div>;
};

示例

响应式的 RadioTile

RadioTileGroup 组件有一个 inline 属性,让每一个 RadioTile 都在同一行显示。我们可以结合 useMediaQuery 来实现响应式的 RadioTile 组件。 在大屏幕上,RadioTile 组件在同一行显示,而在小屏幕上,RadioTile 组件在不同行显示。

响应式的 Modal

Modal 组件有 size 属性,可以设置模态框的大小。我们可以结合 useMediaQuery 来实现响应式的 Modal 组件。在大屏幕上,Modal 组件的大小为固定尺寸,而在小屏幕上,Modal 组件的大小为全屏。

API

useMediaQuery(query) => [...matches]


 const mediaQuerySizeMap = {
  xs: '(max-width: 575px)',
  sm: '(min-width: 576px)',
  md: '(min-width: 768px)',
  lg: '(min-width: 992px)',
  xl: '(min-width: 1200px)',
  xxl: '(min-width: 1400px)'
};


useMediaQuery(
  string
  | keyof typeof mediaQuerySizeMap
  | (string | keyof typeof mediaQuerySizeMap)[]
) => boolean[]
Vercel banner