kliping.pro
  • Docs
  • Explore
  • Builder
  • Directory
  • Colors
  • Typeset
Saved
Hooks
  • Getting Started2
  • State7
  • Advanced6
  • Lifecycle16
  • Browser21
  • useActiveElement
  • useBattery
  • useClickAnyWhere
  • useClickAway
  • useClipboard
  • useDocumentVisibility
  • useElementSize
  • useEventListener
  • useFps
  • useFullscreen
  • useHash
  • useHover
  • useInViewport
  • useIsMatchMedia
  • useIsOnline
  • useMouse
  • useNetwork
  • useOs
  • useScrollLock
  • useTextSelection
  • useTitle
  • Development1
  • Third-Party4
  • Libraries4
  1. Hooks
  2. Browser
  3. useIsMatchMedia

useIsMatchMedia

PreviousNext

Apakah sebuah kueri media sedang cocok.

Kuerinya boleh reaktif — pendengarnya dipasang ulang kalau kuerinya berganti, dan yang lama dilepas lebih dulu.

false saat dirender di server. Itu berarti tata letak yang bergantung pada composable ini akan sempat menggambar keadaan "tidak cocok" sebelum diperbaiki di peramban. Untuk hal yang tidak boleh berkedip seperti itu, kueri media di CSS tetap jawaban yang lebih baik — composable ini untuk keputusan yang tidak bisa diambil CSS, misalnya memilih komponen mana yang dipasang.

Installation ​

pnpm dlx kliping@latest add use-is-match-media

Ikut terpasang sendiri: is-browser.

Salin dulu is-browser — masing-masing memuat sumbernya di halamannya sendiri — lalu tempel berkas ini.

ts
import { getCurrentScope, onScopeDispose, readonly, ref, toValue, watch } from 'vue'
import type { MaybeRefOrGetter } from 'vue'
import { isBrowser } from '@/lib/is-browser'

export function useIsMatchMedia(query: MaybeRefOrGetter<string>) {
  const matches = ref(false)
  let detach: (() => void) | undefined

  const teardown = () => {
    detach?.()
    detach = undefined
  }

  const stopWatch = watch(
    () => toValue(query),
    (mediaQuery) => {
      teardown()
      if (!isBrowser || typeof window.matchMedia !== 'function') return

      const mediaQueryList = window.matchMedia(mediaQuery)
      matches.value = mediaQueryList.matches

      const handler = (event: MediaQueryListEvent) => {
        matches.value = event.matches
      }

      mediaQueryList.addEventListener('change', handler)
      detach = () => mediaQueryList.removeEventListener('change', handler)
    },
    { immediate: true },
  )

  const stop = () => {
    teardown()
    stopWatch()
  }

  if (getCurrentScope()) onScopeDispose(stop)

  return readonly(matches)
}

Requirements ​

RequirementValue
ProjectVue 3.5+, alias @ — disiapkan kliping init
Kliping itemsis-browser
Filescomposables/use-is-match-media.ts

API Reference ​

ts
export function useIsMatchMedia(query: MaybeRefOrGetter<string>)

Parameters ​

ParameterTypeDefaultDescription
queryMaybeRefOrGetter<string>—CSS media query, e.g. (min-width: 768px). May be reactive.

Returns ​

Readonly<Ref<boolean, boolean>> — Whether the query currently matches. Reactive, read-only.

Credits ​

Berasal dari shadcn-hooks (MIT, Copyright (c) 2025 Brendan Dash). Rantai lengkapnya di Credits.

PrevioususeInViewportNext useIsOnline

On This Page

InstallationRequirementsAPI ReferenceParametersReturnsCredits

© 2026 Kliping. Free components are open source under the MIT License.

LicenseCreditsRoadmap