Skip to content

鼠标坐标

在使用 Vue.js 时,我们应该关注可复用性,可组合函数是一个很好的方式,让我们开始吧 👇:

vue
<script setup lang="ts">
// Implement ...
function useEventListener(target, event, callback) {}

// Implement ...
function useMouse() {
  useEventListener(window, "mousemove", () => {});
}
const { x, y } = useMouse();
</script>

<template>Mouse position is at: {{ x }}, {{ y }}</template>

解答

vue
<script setup lang="ts">
import { ref } from "vue";
// Implement ...
function useEventListener(target, event, callback) {
  target.addEventListener(event, callback);
}

// Implement ...
function useMouse() {
  const x = ref(0);
  const y = ref();
  useEventListener(window, "mousemove", (event) => {
    x.value = event.clientX;
    y.value = event.clientY;
  });
  return { x, y };
}
const { x, y } = useMouse();
</script>

<template>Mouse position is at: {{ x }}, {{ y }}</template>