vue-use 中 useMediaQuery

821 阅读1分钟

useMediaQuery 可以获取 是否是大屏,也可以获取是否是 黑夜 模式

vue-use 地址

原理很简单 主要是利用了 matchMedia 这个 api

源码

const isLargeScreen = useMediaQuery('(min-width: 1024px)')
const prefersDark = useMediaQuery('(prefers-color-scheme: dark)')

其中 useMediaQuery

function useMediaQuery(query:string){
    let mediaQuery: MediaQueryList | undefined;
    const matches = ref(false)
    
    const update = ()=>{
        mediaQuery = window.matchMedia(query)
        matches.value = mediaQuery.matches
    }
    // 在 mounted 时进行调用

 if ('addEventListener' in mediaQuery)
      mediaQuery.addEventListener('change', update)
}
// 在 unOmounted 时进行卸载
if ('removeEventListener' in mediaQuery!)
        mediaQuery!.removeEventListener('change', update)

note:顺便带上 matchMedia 可以使用的参数