Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Apply VueUse composables in Vue 3/Nuxt projects to replace custom implementations with battle-tested utilities.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/useMouse.md
1---2category: Sensors3---45# useMouse67Reactive mouse position89## Basic Usage1011```ts twoslash12import { useMouse } from '@vueuse/core'1314const { x, y, sourceType } = useMouse()15```1617Touch is enabled by default. To only detect mouse changes, set `touch` to `false`.18The `dragover` event is used to track mouse position while dragging.1920```ts twoslash21import { useMouse } from '@vueuse/core'22// ---cut---23const { x, y } = useMouse({ touch: false })24```2526## Custom Extractor2728It's also possible to provide a custom extractor function to get the position from the event.2930```ts twoslash31import type { UseMouseEventExtractor } from '@vueuse/core'32import { useMouse, useParentElement } from '@vueuse/core'3334const parentEl = useParentElement()3536const extractor: UseMouseEventExtractor = event => (37event instanceof MouseEvent38? [event.offsetX, event.offsetY]39: null40)4142const { x, y, sourceType } = useMouse({ target: parentEl, type: extractor })43```4445## Component Usage4647```vue48<template>49<UseMouse v-slot="{ x, y }">50x: {{ x }}51y: {{ y }}52</UseMouse>53</template>54```5556## Type Declarations5758```ts59export type UseMouseCoordType = "page" | "client" | "screen" | "movement"60export type UseMouseSourceType = "mouse" | "touch" | null61export type UseMouseEventExtractor = (62event: MouseEvent | Touch,63) => [x: number, y: number] | null | undefined64export interface UseMouseOptions65extends ConfigurableWindow, ConfigurableEventFilter {66/**67* Mouse position based by page, client, screen, or relative to previous position68*69* @default 'page'70*/71type?: UseMouseCoordType | UseMouseEventExtractor72/**73* Listen events on `target` element74*75* @default 'Window'76*/77target?: MaybeRefOrGetter<Window | EventTarget | null | undefined>78/**79* Listen to `touchmove` events80*81* @default true82*/83touch?: boolean84/**85* Listen to `scroll` events on window, only effective on type `page`86*87* @default true88*/89scroll?: boolean90/**91* Reset to initial value when `touchend` event fired92*93* @default false94*/95resetOnTouchEnds?: boolean96/**97* Initial values98*/99initialValue?: Position100}101export interface UseMouseReturn {102x: ShallowRef<number>103y: ShallowRef<number>104sourceType: ShallowRef<UseMouseSourceType>105}106/**107* Reactive mouse position.108*109* @see https://vueuse.org/useMouse110* @param options111*/112export declare function useMouse(options?: UseMouseOptions): UseMouseReturn113```114