千家信息网

Vue3中触发组件选项的示例分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下Vue3中触发组件选项的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!事件名与组件和prop一样
千家信息网最后更新 2026年11月03日Vue3中触发组件选项的示例分析

小编给大家分享一下Vue3中触发组件选项的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

事件名

与组件和prop一样,事件名提供了自动的大小写转换。如果用驼峰命名的子组件中触发一个事件,你将可以在父组件中添加一个kebabcase(短横线分割命名)的监听器。

  this.$emit('myEvent')

与props命名一样,当你使用DOM模板时,我们建议使用kebabcase事件监听器。如果你使用的是字符串模板,这个限制就不适用。

定义自定义事件

可以通过emits选项在组件上定义已发出的事件。

app.component('custom-form', {   emits: ['inFocus', 'submit'] })

当在emits选项中定义了原生事件(如click)时,将使用组件中的事件替代原生事件侦听器。

验证抛出的事件

与props类型验证类似,如果使用对象语法而不是数组语法,则可以验证它。

要添加验证,将为事件分配一个函数,该函数接收传递给$emit调用的参数,并返回一个布尔值以指示事件是否有效。

app.component('custom-form', {   emits: {     // 没有验证     click: null,      // 验证submit 事件     submit: ({ email, password }) => {       if (email && password) {         return true       } else {         console.warn('Invalid submit event payload!')         return false       }     }   },   methods: {     submitForm() {       this.$emit('submit', { email, password })     }   } })

v-model事件

默认情况下,组件上的v-model使用modelValue作为props和update:modelValue做完事件。我们可以通过向v-model传递参数来修改这些名称:

在本例中,子组件将需要一个 title prop 并发出 update:title 要同步的事件:

app.component('my-component', {   props: {     title: String   },   emits: ['update:title'],   template: `        ` })

多个v-model绑定

通过利用特定prop和事件为目标的能力,正如我们之前在v-model参数中所学的那样,我们现在可以在单个组件实例上创建多个v-model绑定。

每个v-model将同步到不同的prop,而不需要在组件中添加额外的选项。

  app.component('user-name', {   props: {     firstName: String,     lastName: String   },   emits: ['update:firstName', 'update:lastName'],   template: `              ` })

处理v-model修饰词

在2.X中,我们对组件v-model上的.trim等修饰符提供了硬编码支持。但是,如果组件可以支持自定义修饰符,则会更有用。

在3.X中,添加到组件v-model的修饰符将通过modelModifiers prop提供给组件。

v-model有内置的修饰符——.trim,.number和.lazy。但是,在某些情况下,你可能还需要添加自己的自定义修饰符。

我们做个实例:将提供的字符串第一个字母大写。

  app.component('my-component', {   props: {     modelValue: String,     modelModifiers: {       default: () => ({})     }   },   emits: ['update:modelValue'],   template: `        `,   created() {     console.log(this.modelModifiers) // { capitalize: true }   } })

现在我们已经设置了 prop,我们可以检查 modelModifiers 对象键并编写一个处理器来更改发出的值。在下面的代码中,每当 元素触发 input 事件时,我们都将字符串大写。

{{ myText }}
const app = Vue.createApp({ data() { return { myText: '' } } }) app.component('my-component', { props: { modelValue: String, modelModifiers: { default: () => ({}) } }, emits: ['update:modelValue'], methods: { emitValue(e) { let value = e.target.value if (this.modelModifiers.capitalize) { value = value.charAt(0).toUpperCase() + value.slice(1) } this.$emit('update:modelValue', value) } }, template: `` }) app.mount('#app')

对于带参数的 v-model 绑定,生成的 prop 名称将为 arg + "Modifiers":

  app.component('my-component', {   props: ['description', 'descriptionModifiers'],   emits: ['update:description'],   template: `        `,   created() {     console.log(this.descriptionModifiers) // { capitalize: true }   } })

以上是"Vue3中触发组件选项的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

事件 组件 验证 参数 字符 字符串 篇文章 示例 分析 内容 函数 可以通过 名称 多个 大写 实例 对象 情况 模板 监听器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 云之行互联网科技 科技服务与互联网 互联网科技股票 致聘互联网科技 腾讯科技 互联网女皇 国外互联网科技网站 深圳卡尔迅互联网科技有限公司怎么样 中盈科技互联网信息有限公司 新华互联网科技2019 武汉健翔互联网络科技有限公司 苏州五指互联网络科技有限 深圳育鹏互联网科技有限公司招聘 伊宁互联网科技做什么的 南通创西澳互联网科技有限公司 电子商务与互联网科技的关系 深圳互联网科技园地址 现代互联网科技公司 如何强化互联网金融科技 颐高云石互联网科技 手冲咖啡和咖啡机区别 互联网为科技 互联网科技视频素材 银川新华互联网科技学校地址 科技赋能互联网健康 隆华科技工业互联网 重庆威客帮互联网科技 贵州叶脉互联网科技有限公司所属行业 深圳互联网科技的发展 互联网大会出现的黑科技
0