webfansplz / vuejs-challenges

Collection of Vue.js challenges
https://vuejs-challenges.netlify.app/
MIT License
2.71k stars 187 forks source link

25 - 鼠标坐标 #2811

Open wangqiJava opened 1 month ago

wangqiJava commented 1 month ago
// your answers
<script setup lang="ts">
import { onMounted, onUnmounted, ref } from 'vue';

// Implement ...
function useEventListener(target, event, callback) {
  onMounted(()=>target.addEventListener(event,callback))
  onUnmounted(()=>target.removeEventListener(event,callback))
}

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

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