Skip to content
Vue 3

Composables

Extract reusable reactive logic into a useMouse composable.

#composables#reuse

Code

vue3
import { ref, onMounted, onUnmounted } from "vue";

export function useMouse() {
  const x = ref(0);
  const y = ref(0);

  function update(e) {
    x.value = e.clientX;
    y.value = e.clientY;
  }

  onMounted(() => window.addEventListener("mousemove", update));
  onUnmounted(() => window.removeEventListener("mousemove", update));

  return { x, y };
}

// Usage in any component:
// const { x, y } = useMouse();