网站首页 > 博客文章 正文
Vue 3 的到来,不仅带来了性能的提升,更带来了代码风格的革新!曾经熟悉的 keyCode、v-on.native、过滤器(filter) 和 $listeners 都已成为过去式。今天,就让我们跟随 Vue 3 的步伐,告别这些“旧爱”,拥抱更简洁、高效的新语法!
keyCode和config.keyCodes退出历史舞台
Vue 3 彻底移除了 keyCode 作为 v-on 的修饰符,同时也不再支持 config.keyCodes。为了处理键盘事件,建议使用标准的 KeyboardEvent.key 属性。
旧爱:
<template>
<input @keyup.enter="handleEnter" />
</template>
新欢:
<template>
<input @keyup="handleKeyup" />
</template>
<script>
export default {
methods: {
handleKeyup(event) {
if (event.key === 'Enter') {
// 处理 Enter 键
}
}
}
};
</script>
代码解析:
- 使用 @keyup 监听键盘弹起事件。
- 在事件处理函数中,通过判断 event.key 的值来识别不同的按键。
v-on.native挥泪告别
在 Vue 3 中,v-on.native 修饰符也被移除。对于自定义组件,可以通过 emits 选项显式地声明要触发的事件,然后在父组件中直接监听即可。
父组件:
<template>
<MyComponent @click="handleClick" @close="handleClose" />
</template>
子组件:
<template>
<button @click="$emit('close')">关闭</button>
</template>
<script>
export default {
emits: ['close']
};
</script>
代码解析:
- 父组件可以直接监听子组件 emits 选项中声明的自定义事件。
过滤器(filter)光荣退休
Vue 3 移除了过滤器,建议使用计算属性或方法来替代。
旧爱:
{{ message | capitalize }}
新欢:
<template>
<p>{{ capitalizedMessage }}</p>
</template>
<script>
export default {
computed: {
capitalizedMessage() {
return this.message.charAt(0).toUpperCase() + this.message.slice(1);
}
}
};
</script>
代码解析:
- 使用计算属性 capitalizedMessage 来处理字符串首字母大写。
$listeners功成身退
Vue 3 中移除了 $listeners,事件监听器现在作为 onXxx 属性传递给子组件。
父组件:
<MyComponent @close="handleClose" />
子组件:
<template>
<div v-bind="$attrs">
<!-- ... -->
</div>
</template>
<script>
export default {
setup(props, { attrs }) {
console.log(attrs.onClose); // 打印 onClose 事件处理函数
}
};
</script>
代码解析:
- 子组件可以通过 $attrs 访问到父组件传递的事件监听器。
总结:
Vue 3 的这些变化,虽然让我们告别了一些熟悉的语法,但也为我们带来了更清晰、简洁、易于理解的代码风格。拥抱变化,不断学习,才能在前端开发的道路上越走越远!
猜你喜欢
- 2024-10-27 深入剖析Vue源码 - 你了解v-model的语法糖吗?
- 2024-10-27 Vue3,Composition API(组合) setup、ref、reactive、toRefs案例
- 2024-10-27 Vue3数据传递$attrs(二)(vue三种传值方式)
- 2024-10-27 Vue2 到 Vue3,重学这 5 个常用的 API
- 2024-10-27 vue内置组件、特殊元素、组件api详解
- 2024-10-27 Vue 3最常用的函数或指令(备用查询)
- 2024-10-27 Vue 3新的API——Composition API组合函数(三)
- 2024-10-27 Vue3 - $attrs 的几种用法(1个或多个根元素、Vue3的两种语法)
- 2024-10-27 想知道Vue3与Vue2的区别?五千字教程助你快速上手Vue3
- 2024-10-27 Vue 3 进阶用法:透传特性(vue3 样式穿透)
你 发表评论:
欢迎- 06-23MySQL合集-mysql5.7及mysql8的一些特性
- 06-23MySQL CREATE TABLE 简单设计模板交流
- 06-23MYSQL表设计规范(mysql设计表注意事项)
- 06-23MySQL数据库入门(四)数据类型简介
- 06-23数据丢失?别慌!MySQL备份恢复攻略
- 06-23MySQL设计规范(mysql 设计)
- 06-23MySQL数据实时增量同步到Elasticsearch
- 06-23MySQL 避坑指南之隐式数据类型转换
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)