vue捕获网页中鼠标的位置,vue3的拆分思想

311 阅读1分钟

vue2捕获网页中鼠标的位置

<template>
  <div>
    <!-- 鼠标在页面上面滑动,显示x,y的坐标: 通过这个案例,让大家知道组合式api的好处,以及怎么样封装代码 -->
    <div>x: {{mouse.x}}, y: {{mouse.y}}</div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      mouse: {
        x: 0,
        y: 0
      }
    }
  },
  mounted() {
    //获取鼠标
    document.addEventListener('mousemove', this.move)
 ;
  },
  destroyed() {
    // 在这个函数里面,一般做一些,事件的解绑,或者清空定时器
    document.removeEventListener('mousemove', this.move)
  },
  methods: {
    move(e) {
      // console.log(e.pageX, e.pageY);
      this.mouse.x = e.pageX
      this.mouse.y = e.pageY
    }
  }
}
</script>

vue3拆分,拆分的文件用.js文件的后缀

<template>
  <div>vue3</div>
  <div>x轴:{{ mouse.x }},y轴:{{ mouse.y }}</div>
</template>

<script setup>
import { useMouse } from './mouse'
 //坐标轴
 const mouse = useMouse()
</script>

用.js做后缀的文件

import { reactive ,onMounted ,onBeforeUnmount} from 'vue';
export function useMouse(){
  const mouse = reactive({
    x:0,
    y:0
  })  
  onMounted(() =>{
    document.addEventListener('mousemove',move)
  })
  // 获取赋值
  const move = (e) =>{
    mouse.x = e.pageX   
    mouse.y = e.pageY
  } 
  // 销毁
  onBeforeUnmount(() =>{
    document.removeEventListener('mousemove',move)  
  })
  return mouse