首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第 7 章 处理用户交互
7.1 事件的监听与处理
7.1.1 事件监听示例
7.1.2 多事件处理
7.1.3 事件修饰符
7.2 Vue中的事件类型
7.2.1 常用的事件类型
7.2.2 按键修饰符
7.3 实战一:随鼠标移动的小球
7.4 实战二:弹球游戏
第 8 章 组件基础
8.1 关于Vue应用与组件
8.1.1 Vue应用的数据配置选项
8.1.2 定义组件
8.2 组件中数据与事件的传递
8.2.1 为组件添加外部属性
8.2.2 处理组件事件
8.2.3 在组件上使用v-model指令
8.3 自定义组件的插槽
8.3.1 组件插槽的基本用法
8.3.2 多具名插槽的用法
8.4 动态组件的简单应用
8.5 实战:开发一款小巧的开关按钮组件
第 9 章 组件进阶
9.1 组件的生命周期与高级配置
9.1.1 生命周期方法
9.1.2 应用的全局配置选项
9.1.3 组件的注册方式
9.2 组件props属性的高级用法
9.2.1 对props属性进行验证
9.2.2 props的只读性质
9.2.3 组件数据注入
9.3 组件Mixin技术
9.3.1 使用Mixin来定义组件
9.3.2 Mixin选项的合并
9.3.3 进行全局Mixin
9.4 使用自定义指令
9.4.1 认识自定义指令
9.4.2 自定义指令的参数
9.5 组件的Teleport功能
第 10 章 Vue响应性编程
10.1 响应性编程原理与在Vue中的应用
10.1.1 手动追踪变量的变化
10.1.2 Vue中的响应性对象
10.1.3 独立的响应性值Ref的应用
10.2 响应式的计算与监听
10.2.1 关于计算变量
10.2.2 监听响应式变量
10.3 组合式API的应用
10.3.1 关于setup方法
10.3.2 在setup方法中定义生命周期行为
10.4 实战:支持搜索和筛选的用户列表示例
10.4.1 常规风格的示例工程开发
10.4.2 使用组合式API重构用户列表页面
当前位置:
首页>>
技术小册>>
TypeScript和Vue从入门到精通(三)
小册名称:TypeScript和Vue从入门到精通(三)
### 7.2.1 常用的事件类型 在Vue.js框架中,结合TypeScript进行开发时,事件处理是构建交互式Web应用不可或缺的一部分。Vue通过其声明式的事件绑定语法,使得在组件上监听DOM事件变得既简单又直观。了解并熟练运用Vue中的常用事件类型,对于提升开发效率和用户体验至关重要。本章节将深入探讨Vue.js中常用的几种事件类型,并展示如何在TypeScript环境下使用它们。 #### 7.2.1.1 鼠标点击事件 **1. click(点击)** `click`事件是最常用的事件之一,它在用户点击元素时触发。在Vue中,你可以通过`v-on:click`或简写为`@click`来监听这个事件。 ```vue <template> <button @click="handleClick">点击我</button> </template> <script lang="ts"> import { defineComponent } from 'vue'; export default defineComponent({ methods: { handleClick(): void { console.log('按钮被点击了!'); } } }); </script> ``` **2. dblclick(双击)** `dblclick`事件在用户双击元素时触发。虽然不如`click`事件常用,但在某些场景下(如快速打开或执行某个操作)非常有用。 ```vue <template> <div @dblclick="handleDoubleClick">双击我试试</div> </template> <script lang="ts"> import { defineComponent } from 'vue'; export default defineComponent({ methods: { handleDoubleClick(): void { console.log('元素被双击了!'); } } }); </script> ``` #### 7.2.1.2 鼠标移动与悬停事件 **1. mouseover(鼠标移入)** 当鼠标指针移动到元素或其子元素上时,`mouseover`事件被触发。 **2. mouseout(鼠标移出)** 与`mouseover`相反,`mouseout`事件在鼠标指针离开元素或其子元素时触发。 **3. mousemove(鼠标移动)** `mousemove`事件在鼠标指针在元素内部移动时持续触发。 ```vue <template> <div @mouseover="handleMouseOver" @mouseout="handleMouseOut" @mousemove="handleMouseMove" style="width: 200px; height: 200px; background-color: #f0f0f0; display: flex; justify-content: center; align-items: center;"> 鼠标移动试试 </div> </template> <script lang="ts"> import { defineComponent } from 'vue'; export default defineComponent({ methods: { handleMouseOver(): void { console.log('鼠标移入!'); }, handleMouseOut(): void { console.log('鼠标移出!'); }, handleMouseMove(event: MouseEvent): void { console.log(`鼠标位置:X=${event.clientX}, Y=${event.clientY}`); } } }); </script> ``` #### 7.2.1.3 表单事件 **1. input(输入)** `input`事件在`<input>`、`<textarea>`等表单元素的值发生变化时触发。这对于实现实时数据验证或自动完成功能非常有用。 ```vue <template> <input type="text" @input="handleInput" placeholder="输入内容"> </template> <script lang="ts"> import { defineComponent } from 'vue'; export default defineComponent({ methods: { handleInput(event: Event): void { const target = event.target as HTMLInputElement; console.log(`输入的内容是:${target.value}`); } } }); </script> ``` **2. change(改变)** 与`input`事件不同,`change`事件在表单元素的值发生变化且元素失去焦点时触发(对于`<select>`元素,则是在选项改变时立即触发)。 ```vue <template> <select @change="handleChange"> <option value="option1">选项1</option> <option value="option2">选项2</option> </select> </template> <script lang="ts"> import { defineComponent } from 'vue'; export default defineComponent({ methods: { handleChange(event: Event): void { const target = event.target as HTMLSelectElement; console.log(`选中的值是:${target.value}`); } } }); </script> ``` **3. submit(提交)** `submit`事件在表单提交时触发。通过监听此事件,可以在表单数据发送到服务器之前进行验证或修改。 ```vue <template> <form @submit.prevent="handleSubmit"> <input type="text" name="username" placeholder="用户名"> <button type="submit">提交</button> </form> </template> <script lang="ts"> import { defineComponent } from 'vue'; export default defineComponent({ methods: { handleSubmit(event: Event): void { event.preventDefault(); // 阻止表单默认提交行为 console.log('表单提交事件被触发'); // 这里可以添加表单验证或数据处理的逻辑 } } }); </script> ``` #### 7.2.1.4 键盘事件 **1. keydown(按键按下)** `keydown`事件在用户按下键盘上的任意键时触发。 **2. keyup(按键释放)** 与`keydown`相反,`keyup`事件在用户释放键盘上的键时触发。 **3. keypress(按键按下并产生字符)** `keypress`事件在用户按下并产生一个字符的键时触发(如字母、数字键等)。但需要注意的是,随着现代浏览器的更新,`keypress`事件的使用已逐渐被`keydown`和`keyup`所取代,因为后者提供了更全面的键盘事件处理能力。 ```vue <template> <input type="text" @keydown="handleKeyDown" @keyup="handleKeyUp" placeholder="按键试试"> </template> <script lang="ts"> import { defineComponent } from 'vue'; export default defineComponent({ methods: { handleKeyDown(event: KeyboardEvent): void { console.log(`按键按下:${event.key}`); }, handleKeyUp(event: KeyboardEvent): void { console.log(`按键释放:${event.key}`); } } }); </script> ``` #### 7.2.1.5 触摸事件 对于移动设备,触摸事件(如`touchstart`、`touchmove`、`touchend`)也非常重要。这些事件允许你处理用户的触摸操作,如滑动、拖动等。 ```vue <template> <div @touchstart="handleTouchStart" @touchmove="handleTouchMove" @touchend="handleTouchEnd" style="width: 200px; height: 200px; background-color: #ddd; display: flex; justify-content: center; align-items: center;"> 触摸我试试 </div> </template> <script lang="ts"> import { defineComponent } from 'vue'; export default defineComponent({ methods: { handleTouchStart(event: TouchEvent): void { console.log('触摸开始'); }, handleTouchMove(event: TouchEvent): void { console.log('触摸移动'); }, handleTouchEnd(event: TouchEvent): void { console.log('触摸结束'); } } }); </script> ``` ### 总结 在Vue.js结合TypeScript的开发过程中,理解和运用好常用的事件类型,对于构建丰富、交互性强的Web应用至关重要。从基本的鼠标点击事件到复杂的触摸事件,再到表单和键盘事件,每种事件类型都有其特定的应用场景和触发条件。通过合理的事件监听和事件处理逻辑,你可以让应用更加符合用户的操作习惯,提升用户体验。希望本章节的内容能够帮助你更好地掌握Vue.js中的事件处理机制。
上一篇:
7.2 Vue中的事件类型
下一篇:
7.2.2 按键修饰符
该分类下的相关小册推荐:
TypeScript和Vue从入门到精通(五)
Vue源码完全解析
VUE组件基础与实战
TypeScript和Vue从入门到精通(一)
Vue原理与源码解析
Vue.js从入门到精通(四)
Vue3技术解密
vuejs组件实例与底层原理精讲
移动端开发指南
TypeScript和Vue从入门到精通(二)
Vue.js从入门到精通(三)
TypeScript和Vue从入门到精通(四)