跳到主要内容

useMediaQuery

分类
导出大小
1.17 kB
上次更改
8 个月前

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

演示

isLargeScreen: false
prefersDark: false

用法

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

服务端渲染 (SSR) 和 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
})

或者,你可以使用 provideSSRWidth 为你的应用全局设置此功能。

类型声明

ts
/**
 * Reactive Media Query.
 *
 * @see https://vueuse.org.cn/useMediaQuery
 * @param query
 * @param options
 */
export declare function 
useMediaQuery
(
query
:
MaybeRefOrGetter
<string>,
options
?:
ConfigurableWindow
& {
ssrWidth
?: number
}, ):
ComputedRef
<boolean>

来源

源代码演示文档

贡献者

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

更新日志

v12.8.0
7432f - feat(types): 废弃 MaybeRefMaybeRefOrGetter,转而使用 Vue 的原生类型 (#4636)
v12.5.0
c6c6e - feat: 在未使用 useEventListener 的地方使用它 (#4479)
v12.3.0
59f75 - feat(toValue): 废弃 @vueuse/shared 中的 toValue,转而使用 Vue 的原生函数
v12.1.0
55965 - feat(useSSRWidth): 在 useMediaQuery 和 useBreakpoints 中添加对 SSR 的可选支持 (#4317)
3af75 - fix: 返回值应该是计算属性 (#4403)
0a9ed - feat!: 放弃对 Vue 2 的支持,优化打包并清理 (#4349)
v10.3.0
f3969 - fix: 仅在查询更改时添加/移除事件监听器 (#3236)

根据 MIT 许可证发布。