Skip to content

useMediaQuery ​

类别
导出体积
1.13 kB
上次更改
2 years ago

响应式的媒体查询。一旦你创建了一个 MediaQueryList 对象,你可以检查查询结果或在结果变化时接收通知。

示例 ​

isLargeScreen: false
prefersDark: false

使用方法 ​

ts
import { 
useMediaQuery
} from '@vueuse/core'
const
isLargeScreen
=
useMediaQuery
('(min-width: 1024px)')
const
isPreferredDark
=
useMediaQuery
('(prefers-color-scheme: dark)')

Server Side Rendering and Nuxt ​

如果在启用 SSR 时使用 useMediaQuery,需要指定服务端及水合前要渲染的屏幕尺寸,以避免水合不匹配。

ts
import { 
useMediaQuery
} from '@vueuse/core'
const
isLarge
=
useMediaQuery
('(min-width: 1024px)', {
ssrWidth
: 768 // Will enable SSR mode and render like if the screen was 768px wide
})
console
.
log
(
isLarge
.
value
) // always false because ssrWidth of 768px is smaller than 1024px
onMounted
(() => {
console
.
log
(
isLarge
.
value
) // false if screen is smaller than 1024px, true if larger than 1024px
})

Alternatively you can set this up globally for your app using provideSSRWidth

类型声明 ​

ts
/**
 * 响应式媒体查询。
 *
 * @see https://vueuse.org/useMediaQuery
 * @param query
 * @param options
 */
export declare function 
useMediaQuery
(
query
:
MaybeRefOrGetter
<string>,
options
?:
ConfigurableWindow
& {
ssrWidth
?: number
}, ):
ComputedRef
<boolean>

源码 ​

源码 • 演示 • 文档

贡献者 ​

Anthony Fu
ikxin
Antério Vieira
Anthony Fu
Robin
IlyaL
zhcndoc-bot
Wahid Rizka Fathurrohman
SerKo
James Garbutt
Fernando Fernández
Adrien Foulon
Alex
Indrek Ardel
Zhousg
Young
Jelf
Dominik Freier
webfansplz
Eureka
karma
Alex Kozack
Jacob Clevenger

更新日志 ​

7432f - feat(types): deprecate MaybeRef and MaybeRefOrGetter in favor of Vue's native (#4636)
c6c6e - feat: use useEventListener where it was not being used (#4479)
59f75 - feat(toValue): deprecate toValue from @vueuse/shared in favor of Vue's native
55965 - feat(useSSRWidth): add optional support for SSR in useMediaQuery and useBreakpoints (#4317)
3af75 - fix: the return value should be computed (#4403)
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)