vue之鼠标事件小Demo

9 篇文章 0 订阅

对vue3的基础认识

案例中使用到:

setup生命周期函数,必须有返回值,其返回值可在模板内直接使用

vue3中按需导入:

       1. reactive 常用于操作对象数据的响应式化 

        2. ref 常用于操作单个简单类型数据的响应式化,也可操作复杂数据类型。当未知数据类型时,推荐使用ref(null))

        3. toRefs  常用于setup的返回对象中直接解构对象,让模板可直接拿到其中的单个属性

        4. 常用生命周期钩子

                onBeforeMount onMounted onBeforeUpdate onUpdated onBeforeUnmount onUnmounted 

模板部分

<template>
  <div class="container">
    <div>鼠标位置:</div>
    <div>X轴:{{ x }}</div>
    <div>Y轴:{{ y }}</div>
  </div>
</template>

vue2

JS部分

<script>
export default {
  name: "App",
  data() {
    return {
      x: 0,
      y: 0,
    };
  },
  methods: {
    MouseMove(e) {
      // console.log(e);
      this.x = e.pageX;
      this.y = e.pageY;
    },
  },
  mounted() {
    document.addEventListener("mousemove", this.MouseMove);
  },
  destroyed() {
    document.removeEventListener("mousemove", this.MouseMove);
  },
};
</script>

vue3

JS部分

方法一

<script>
// 按需导入 
import { ref, onMounted, onUnmounted } from "vue";
export default {
  setup() {
    // 定义属性
    let x = ref(0);
    let y = ref(0);
    // 定义方法
    let MouseMove = (e) => {
      x.value = e.pageX;
      y.value = e.pageY;
    };
    onMounted(() => {
      document.addEventListener("mousemove", MouseMove);
    });
    onUnmounted(() => {
      document.removeEventListener("mousemove", MouseMove);
    });
    return {
      x,
      y,
      MouseMove,
    };
  },
};
</script>

方法二

<script>
// 按需导入
import { reactive, toRefs, onMounted, onUnmounted } from "vue";
export default {
  setup() {
    // 定义属性
    let position = reactive({
      x: 0,
      y: 0,
    });
    // 定义方法
    let MouseMove = (e) => {
      position.x = e.pageX;
      position.y = e.pageY;
    };
    onMounted(() => {
      document.addEventListener("mousemove", MouseMove);
    });
    onUnmounted(() => {
      document.removeEventListener("mousemove", MouseMove);
    });
    return {
      ...toRefs(position),
      MouseMove,
    };
  },
};
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue是一种用于构建用户界面的渐进式 JavaScript 框架,而jsPlumb是一个用于在网页上创建可拖拽连接线的JavaScript库。结合Vue和jsPlumb可以实现动态生成可拖拽并且连接的元素的效果。 使用Vue2和jsPlumb插件来创建一个demo时,首先需要引入Vue和jsPlumb的相关文件。然后,创建一个Vue实例来管理demo应用的数据和行为。 在Vue模板中,可以使用v-for指令和v-bind指令来动态渲染元素,使用v-on指令来绑定事件,以及使用jsPlumb提供的API来创建可拖拽并且连接的元素。 首先,在Vue的data中定义要生成的元素的数据数组,每个元素包含位置、样式和唯一标识等属性。然后,在Vue的created生命周期钩子中,使用jsPlumb的makeSource方法将元素设置为可拖拽并且可以连接的源端点。 接着,在模板中使用v-for指令遍历数据数组,动态渲染元素,并使用v-bind指令绑定元素的属性。同时,使用v-on指令绑定元素的拖拽事件。 在Vue的methods中,可以定义一个鼠标拖拽的回调函数,该回调函数会根据拖拽的位置将元素的位置属性进行更新。还可以定义一个连接的回调函数,当连接两个元素时,会触发该回调函数,可以在其中执行一些逻辑操作。 最后,在Vue的mounted生命周期钩子中,使用jsPlumb的makeTarget方法将元素设置为可拖拽并且可以连接的目标端点。 通过以上步骤,就可以创建一个基于Vue2和jsPlumb插件的demo,实现动态生成可拖拽并且连接的元素的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值