创源素材
67.15M · 2026-02-04
在 Vue 开发中,修饰符(Modifiers)是指令后的一个特殊后缀(以 . 开头),它能以极简的方式帮我们处理事件冒泡、键盘以及复杂的双向绑定逻辑。掌握它们,能让你的模板代码既优雅又高效。
事件修饰符主要用于处理 DOM 事件的细节。
.stop:阻止事件冒泡(调用 event.stopPropagation())。.prevent:阻止事件的默认行为(调用 event.preventDefault())。.capture:在捕获模式下触发事件器。.self:只有当事件是从触发元素本身触发时才触发回调。.once:事件只触发一次,之后自动移除器。.passive:滚动事件的性能优化,告诉浏览器不需要等待 preventDefault。在键盘事件时,我们经常需要检查特定的按键,例如:<input @keyup.enter="submitForm" type="text" placeholder="按回车提交">。
.enter:回车键.tab:Tab 键.space:空格键.delete:删除或退格键.up / .down / .left / .right:方向键用于限制处理程序仅响应特定的鼠标按键。
.left:点击鼠标左键触发。.right:点击鼠标右键触发。.middle:点击鼠标中键(滚轮点击)触发。这些修饰符可以自动处理表单输入的数据格式。
.lazy: 将v-model的同步时机设置在change事件之后,一般为在输入框失去焦点时。.number:自动将用户的输入值转为数值类型(内部使用 parseFloat)。.trim:自动过滤用户输入内容的首尾空白字符。这是 Vue 2 到 Vue 3 变化最大的部分。
.sync在 Vue 2 中,.sync 是实现父子组件属性双向绑定的语法糖。
// 使用 .sync 的语法糖
<ChildComponent :title.sync="pageTitle" />
// 在子组件的方法中
this.$emit('update:title', newTitleValue);
v-model:propVue 3 废弃了 .sync,将其功能合并到了 v-model 中。支持在同一个组件上绑定多个 v-model。
// 在父组件中
<ChildComponent v-model:title="pageTitle" />
// 子组件
<script setup>
defineProps(['title']);
const emit = defineEmits(['update:title']);
const updateTitle = (newVal) => {
emit('update:title', newVal);
};
</script>
defineModel这是目前 Vue 3 最推荐的写法,极大简化了双向绑定的逻辑代码。
// 父组件
<ChildComponent v-model="inputValue" />
// 子组件
const inputValue = defineModel({
// inputValue为双向绑定输入框的值
type: [String],
// 默认值
default: ''
})
.trim 和 .number,降低后端校验压力。v-model:prop,如果是新项目(Vue 3.4+),请直接使用 defineModel,它能让你的代码量减少 50% 以上。