您现在的位置是:群英 > 开发技术 > web开发
vue事件处理用于什么,处理事件的示例是怎样的
Admin发表于 2022-11-12 18:03:38450 次浏览
在这篇文章中我们会学习到关于“vue事件处理用于什么,处理事件的示例是怎样的”的知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望对大家学习或工作能有帮助。下面就请大家跟着小编的思路一起来学习一下吧。



Vue 事件处理是每个 Vue 项目的必要方面。它用于捕获用户输入,共享数据以及许多其他创造性方式。在本文中,我将介绍基础知识,并提供一些用于处理事件的代码示例。

基本事件处理

使用 v-on 指令(@ 简称),我们可以监听 DOM 事件并运行处理程序方法或内联 Javascript:

<div v-on:click='handleClick' />
<!-- 相当于 -->
<div @click='handleClick' />
登录后复制

我们将介绍您可能想捕获的一些更常见的事件,单击此处以获取 DOM 事件的完整列表。

发出自定义事件

任何 Web 框架中的常见用例都是希望子组件能够向其父组件发出事件。这将允许双向数据绑定。

这样的一个示例是将数据从输入组件发送到父表单。

根据我们使用的是 Options API 还是 Composition API,发出事件的语法是不同的。

在 Options API 中,我们可以简单地调用 this.$emit(eventName, payload):

export default {
  methods: {
    handleUpdate() {
      this.$emit('update', 'Hello World')
    }
  }
}
登录后复制

但是,Composition API 没有 this。相反,我们可以使用 Vue3 setup 方法直接访问 emit 方法。

setup 方法的第二个参数是上下文变量,它包含三个属性:attrs、slot 和 emit。

只要导入上下文对象,就可以使用与 Options API 相同的参数来调用 emit。

export default {
  setup (props, context) {
    const handleUpdate = () => {
      context.emit('update', 'Hello World')
    }
    return { handleUpdate }
  } 
}
登录后复制

整理代码的一种方法是使用对象解构直接导入 emit。看起来像这样。

export default {
  setup (props, { emit }) {
    const handleUpdate = () => {
      emit('update', 'Hello World')
    }
    return { handleUpdate }
  } 
}
登录后复制

无论我们使用 Options API 还是 Composition API,我们的父组件都以相同的方式监听自定义事件。

<HelloWorld @update='inputUpdated'/>
登录后复制

如果我们发出的方法也传递了一个值,则可以用两种不同的方式捕获它-取决于我们是内联工作还是使用其他方法。

首先,我们可以 $event 在模板中使用传递的值。

<HelloWorld @update='inputUpdated($event)'/>
登录后复制

其次,如果我们使用方法来处理事件,则传递的值将作为第一个参数自动传递给我们的方法。

<HelloWorld @update='inputUpdated'/>
<script>
methods: {
  inputUpdated: (value) => {
    console.log(value) // WORKS TOO
  }
}
</ script>
登录后复制

处理鼠标修饰符

以下是我们可以在 v-on 指令中捕获的主要 DOM 鼠标事件 的列表:

<div 
  @mousedown='handleEvent'
  @mouseup='handleEvent'
  @click='handleEvent'
  @dblclick='handleEvent'
  @mousemove='handleEvent'
  @mouseover='handleEvent'
  @mousewheel='handleEvent'
  @mouseout='handleEvent'
>
  与我互动!
</div>
登录后复制

对于我们的点击事件,我们还可以添加鼠标事件修饰符来限制哪些鼠标按钮将触发我们的事件。有三个鼠标按键:left、right 和 middle。

<!-- 这将仅在鼠标左键单击时触发 -->
<div @mousedown.left='handleLeftClick'> Left </div>
登录后复制

按键修饰符

我们可以监听三个 DOM 键盘事件:

<input
  type="text"
  placeholder="Type something"
  @keypress="handleKeyPressed"
  @keydown="handleKeyDown"
  @keyup="handleKeyUp"
/>
登录后复制

通常,我们希望在某个按键上监听这些事件,Vue 具有某些键的别名可以帮助到我们。

  • enter

  • tab

  • delete(捕获“删除”和“退格”键)

  • esc

  • space

  • up

  • down

  • left

  • right

<input
  type='text'
  placeholder='Type something'
  @keyup.enter='handleEnter'
/>
登录后复制

需要注意的是,Vue 2.x 中,我们还可以使用键码 的方式,但在 Vue3.x 不在适用:

<!--  -->
<input
  type='text'
  placeholder='Type something'
   @keyup.13='handleEnter'
/>
登录后复制

一些特殊的字符无法被匹配,如 "、'、/、=、> 和 .。这些应该在监听器内使用事件对象单独判断。

<input
  type='text'
  placeholder='Type something'
   @keyup.,='handleEnter'
/>
登录后复制

注意:Vue 3.x 不在支持自定义按键 config.keyCodes

系统修饰符

对于某些项目,我们可能只想在用户按下修饰符的情况下触发事件。修饰符类似于 Command 或 shift。

在 Vue 中,有四个系统修饰符。

  • shift

  • alt

  • ctrl

  • meta (在 Mac 上为 cmd,在 Windows 上为 Windows 键)

这对于在 Vue 应用程序中创建诸如自定义键盘快捷键之类的功能非常有用。

<!-- 为 Shift + a clear 的自定义快捷方式 -->
<button @keyup.shift.a="clear">清除</button>
登录后复制

在 Vue 文档中,还有一个 exact 修饰符,确保仅在按下我们指定的键且没有其他键的情况下才触发事件。

<!-- 仅为 Shift + a 执行 clear -->
<button @keyup.shift.a.exact="clear">清除</button>
登录后复制

鼠标按钮修饰符:lefe、right 和 middle,默认行为为 left(左键点击)。

<button @click.middle="clear">清除</button>
登录后复制

事件修饰符

对于所有 DOM 事件,我们可以使用一些修饰符来更改其运行方式。无论是停止传播还是阻止默认操作,Vue 都有几个内置的 DOM 事件修饰符。

<!-- 阻止默认操作 -->
<form @submit.prevent />
<!-- 停止事件传播 -->
<form @submit.stop="submitForm" />
<!-- 串联的修饰符 -->
<form @submit.stop.prevent="submitForm" />
<!-- 防止事件被触发多次 -->
<el-button @click.once="handleClose">执行一次</el-button>
登录后复制

使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用 v-on:click.prevent.self 会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。

以下时 Vue 提供的完整事件修饰符:

  • stop 阻止事件传播

  • prevent 阻止默认事件

  • capture 添加事件监听器时使用事件捕获模式,即内部元素触发的事件先在此处理,然后才交由内部元素进行处理

  • self 只当在 event.target 是当前元素自身时触发处理函数,即事件不是从内部元素触发的

  • once 仅执行一次

  • passive 修饰符尤其能够提升移动端的性能

注意:不要把 .passive 和 .prevent 一起使用,因为 .prevent 将会被忽略,同时浏览器可能会向你展示一个警告。请记住,.passive 会告诉浏览器你不想阻止事件的默认行为。

<!-- 这其中包含 `event.preventDefault()` 的情况 -->
<div @scroll.passive="onScroll">...</div>
登录后复制

滚动事件的默认行为(即滚动行为)将会立即触发,而不会等待 onScroll 完成。


到此这篇关于“vue事件处理用于什么,处理事件的示例是怎样的”的文章就介绍到这了,感谢各位的阅读,更多相关vue事件处理用于什么,处理事件的示例是怎样的内容,欢迎关注群英网络资讯频道,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: vue事件处理
相关信息推荐
2022-06-16 09:26:40 
摘要:方法:1、用“array_values(数组)”将指定数组转为索引数组;2、用“array_search(数值,索引数组)”,在索引数组中搜索数值,返回对应的索引值(下标);3、因索引值是从0开始计数的,需进行加1处理,语法“索引值+1”。
2022-09-21 09:30:51 
摘要:这篇文章主要为大家详细介绍了session反序列化,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
2021-12-10 18:49:10 
摘要:PHP配置优化怎样做,如何提高PHP项目安全?因为脚本语言和早期版本设计的问题,PHP项目会有一定的安全问题,因此我们想要提高PHP项目安全,可以从配置优化入手,下面小编就给大家分享几个方法。感兴趣的朋友就继续往下看吧。
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部