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. useHover

useHover

PreviousNext

Apakah penunjuk sedang berada di atas sebuah elemen.

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.

Installation ​

pnpm dlx kliping@latest add use-hover

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 { BasicTarget } from '@/lib/target'

export interface UseHoverOptions {
  /** Called when the pointer enters. */
  onEnter?: () => void
  /** Called when the pointer leaves. */
  onLeave?: () => void
  /** Called on enter and leave with the new state. */
  onChange?: (isHovering: boolean) => void
}

export function useHover(target: BasicTarget, 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
}

Requirements ​

RequirementValue
ProjectVue 3.5+, alias @ — disiapkan kliping init
Kliping itemstarget, use-boolean, use-event-listener
Filescomposables/use-hover.ts

API Reference ​

ts
export interface UseHoverOptions {
  /** Called when the pointer enters. */
  onEnter?: () => void
  /** Called when the pointer leaves. */
  onLeave?: () => void
  /** Called on enter and leave with the new state. */
  onChange?: (isHovering: boolean) => void
}

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

Parameters ​

ParameterTypeDefaultDescription
targetBasicTarget—Element, ref, or getter to watch.
options?UseHoverOptions{}Enter, leave, and change callbacks.
options.onEnter?(() => void)—Called when the pointer enters.
options.onLeave?(() => void)—Called when the pointer leaves.
options.onChange?((isHovering: boolean) => void)—Called on enter and leave with the new state.

Returns ​

Ref<boolean, boolean> — Reactive true while the pointer is over the target.

Credits ​

Berasal dari shadcn-hooks (MIT, Copyright (c) 2025 Brendan Dash). Bentuk API-nya dari ahooks lewat shadcn-hooks. Rantai lengkapnya di Credits.

PrevioususeHashNext useInViewport

On This Page

InstallationRequirementsAPI ReferenceParametersReturnsCredits

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

LicenseCreditsRoadmap