Kliping
KlipingBerandaDokumentasiKomponenBlocksVariasiTemplateDice UIHooks
Memulai
  • Pengenalan
  • Instalasi
  • Kredit
State
  • useBoolean
  • useControllableValue
  • useCounter
  • useDebounce
  • useResetState
  • useThrottle
  • useToggle
Lanjutan
  • useCreation
  • useCustomCompareEffect
  • useLatest
  • useLockFn
  • useMemoizedFn
  • usePrevious
Siklus Hidup
  • useDebounceEffect
  • useDebounceFn
  • useDeepCompareEffect
  • useDeepCompareLayoutEffect
  • useEffectEvent
  • useEffectWithTarget
  • useInterval
  • useIsHydrated
  • useIsomorphicLayoutEffect
  • useMount
  • useThrottleEffect
  • useThrottleFn
  • useTimeout
  • useUnmount
  • useUpdate
  • useUpdateEffect
Peramban
  • useActiveElement
  • useBattery
  • useClickAnyWhere
  • useClickAway
  • useClipboard
  • useDocumentVisibility
  • useElementSize
  • useEventListener
  • useFps
  • useFullscreen
  • useHash
  • useHover
  • useInViewport
  • useIsMatchMedia
  • useIsOnline
  • useMouse
  • useNetwork
  • useOs
  • useScrollLock
  • useTextSelection
  • useTitle
Pengembangan
  • useWhyDidYouUpdate
Paket Luar
  • useMcp
  • useQuery
  • useStickToBottom
  • useSwr
Pustaka
  • isBrowser
  • createContext
  • bacaElemen
  • saatTerpasang

useHover

SebelumnyaBerikutnya

Apakah penunjuk sedang berada di atas sebuah elemen.

Arahkan penunjuk ke sini

mouseenter dan mouseleave, bukan mouseover dan mouseout — dua yang terakhir ikut menyala saat penunjuk berpindah antar anak di dalam elemen yang sama, dan hasilnya berkedip. Sama seperti sumbernya.

Pemasangan ​

npx shadcn-vue@latest add @kliping/use-hover

Perlu @kliping terdaftar di components.json project Anda. Lihat cara menyiapkannya.

Ikut terpasang sendiri: target, use-boolean, use-event-listener.

Salin dulu target, use-toggle, use-boolean, is-browser, use-event-listener — masing-masing memuat sumbernya di halamannya sendiri — lalu tempel berkas ini.

ts
import { useBoolean } from '@/composables/use-boolean'
import { useEventListener } from '@/composables/use-event-listener'
import type { TargetElemen } from '@/lib/target'

export interface UseHoverOptions {
  onEnter?: () => void
  onLeave?: () => void
  onChange?: (sedangDiatas: boolean) => void
}

export function useHover(target: TargetElemen, options: UseHoverOptions = {}) {
  const { onEnter, onLeave, onChange } = options
  const { value, setTrue, setFalse } = useBoolean(false)

  useEventListener('mouseenter', () => {
    onEnter?.()
    setTrue()
    onChange?.(true)
  }, { target })

  useEventListener('mouseleave', () => {
    onLeave?.()
    setFalse()
    onChange?.(false)
  }, { target })

  return value
}

API ​

ts
export interface UseHoverOptions {
  onEnter?: () => void
  onLeave?: () => void
  onChange?: (sedangDiatas: boolean) => void
}

export function useHover(target: TargetElemen, options: UseHoverOptions = {})
useHashuseInViewport

Di halaman ini

PemasanganAPI
Dirilis di bawah lisensi MIT. Ditulis ulang untuk Vue dari shadcn-vue, shadcn-ui-blocks, dan shadcn-hooks. Hak cipta © 2026 Kliping