Vue3 事件处理

简介: 我们可以使用 v-on 指令来监听 DOM 事件,从而执行 JavaScript 代码。v-on 指令可以缩写为 @ 符号。语法格式:


1.基本使用


我们可以使用 v-on 指令来监听 DOM 事件,从而执行 JavaScript 代码。

v-on 指令可以缩写为 @ 符号。

语法格式:


v-on:click="methodName"
@click="methodName"


一个最简单的事例:


<div id="app">
    <button @click="counter += 1">增加 1</button>
    <p>这个按钮被点击了 {{ counter }} 次。</p>
</div>
<script>
    const app = {
        data() {
            return {
                counter: 0
            }
        }
    }
    Vue.createApp(app).mount('#app')
</script>



但是在通常情况下,我们需要使用一个方法来调用 JavaScript 方法。

v-on 可以接收一个定义的方法来调用。


<div id="app">
    <button @click="greet">点我</button>
</div>
<script>
    const app = {
        data() {
            return {
                name: 'Dahe'
            }
        },
        methods: {
            greet(event) {
                alert('Hello ' + this.name + '!')
            }
        }
    }
    Vue.createApp(app).mount('#app')
</script>


事件处理程序中可以有多个方法,这些方法由逗号运算符分隔:


<div id="app">
    <!-- 这两个 one() 和 two() 将执行按钮点击事件 -->
    <button @click="one($event),two($event)">
        点我
    </button>
</div>
<script>
    const app = {
        data() {
        },
        methods: {
            one(event) {
                alert("第一个事件处理器逻辑...")
            },
            two(event) {
                alert("第二个事件处理器逻辑...")
            }
        }
    }
    Vue.createApp(app).mount('#app')
</script>


2.事件修饰符


Vue.js 为 v-on 提供了事件修饰符来处理 DOM 事件细节


Vue.js 通过由点 . 表示的指令后缀来调用修饰符。


.stop - 阻止冒泡

.prevent - 阻止默认事件

.capture - 阻止捕获

.self - 只监听触发该元素的事件

.once - 只触发一次

.left - 左键事件

.right - 右键事件

.middle - 中间滚轮事件

例子:


<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- click 事件只能点击一次 -->
<a v-on:click.once="doThis"></a>


实操:


<div id="app">
    <button v-on:click.once="counter += 1">增加 1</button>
    <p>这个按钮被点击了 {{ counter }} 次。</p>
</div>


添加了事件修饰符,此按钮只能点击一次


3.按键修饰符


Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:

例如:


<!-- 只有在按住键盘enter键时调用 vm.submit() -->
<input v-on:keyup.enter="submit">


实例:


<div id="app">
    <button v-on:keyup.enter="counter += 1">增加 1</button>
    <p>这个按钮被点击了 {{ counter }} 次。</p>
</div>


此时按钮只有在选中后按住enter键才能执行 + 1 操作:



目录
相关文章
|
18天前
|
JavaScript 前端开发 索引
「Vue3系列」Vue3 条件语句/循环语句
在 Vue 3 中,你可以使用条件语句来动态地控制模板中的渲染内容。Vue 提供了多种方式来实现条件渲染,包括 `v-if`、`v-else-if`、`v-else` 和 `v-show` 指令。
33 0
|
15天前
|
JavaScript 前端开发 数据安全/隐私保护
Vue3——如何实现页面访问拦截
Vue3——如何实现页面访问拦截
|
19天前
Vue3 子传父 暴露数据 defineExpose
Vue3 子传父 暴露数据 defineExpose
Vue3 子传父 暴露数据 defineExpose
|
9天前
|
JavaScript 算法 前端开发
vue3和vue2的区别都有哪些
【4月更文挑战第15天】Vue3与Vue2在响应式系统(Proxy vs. Object.defineProperty)、组件模块化(Composition API vs. Options API)、数据变化检测(Reactive API vs. $watch)、虚拟DOM算法(基于迭代 vs. 基于递归)及Tree-Shaking支持上存在显著差异。Vue3的改进带来了更好的性能和灵活性,适合追求新技术的项目。Vue2则因其成熟稳定,适合维护大型项目。选择版本需根据项目需求、团队情况和技术追求来决定。
13 0
|
10天前
|
JavaScript
vue3+vite项目配置ESlint
vue3+vite项目配置ESlint
12 0
|
10天前
乾坤子应用配置(vue3+vite)
乾坤子应用配置(vue3+vite)
16 0
vue3中使用router路由实现跳转传参
vue3中使用router路由实现跳转传参
|
15天前
|
JavaScript
vue 组件事件
vue 组件事件
|
15天前
|
JavaScript 前端开发 开发者
浅谈Vue 3的响应式对象: ref和reactive
浅谈Vue 3的响应式对象: ref和reactive
|
18天前
|
缓存 JavaScript API
「Vue3系列」Vue3 计算属性(computed)、监听属性(watch)
在 Vue 3 中,计算属性(Computed Properties)是一种强大的功能,它允许你声明一个依赖于其他响应式数据属性的属性,并且这个属性的值会根据其依赖的数据的变化而自动更新。计算属性是基于它们的依赖关系进行缓存的,只有在它的相关依赖发生改变时才会重新求值。
28 0