On gists
Composable: useMouse
Vue.js
useMouse.js
Raw
#
import { ref, onMounted, onUnmounted } from 'vue'
export function useMouse() {
const x = ref(0)
const y = ref(0)
function update(event) {
x.value = event.pageX
y.value = event.pageY
}
onMounted(() => window.addEventListener('mousemove', update))
onUnmounted(() => window.removeEventListener('mousemove', update))
return { x, y }
}
// usage
<template>
X: {{ x }} Y: {{ y }}
</template>
<script setup>
import { useMouse } from './useMouse';
const { x, y } = useMouse();
</script>
// with params = config
// Using an options object
const title = useTitle('A new title', { titleTemplate: '>> %s <<' });
// or with many params
const title = useTitle('A new title', '>> %s <<');
export function useMouse(options) {
const {
asArray = false,
throttle = false,
} = options;
// ...
};