声明组件发出的自定义事件。
类型
interface ComponentOptions {
emits?: ArrayEmitsOptions | ObjectEmitsOptions
}
type ArrayEmitsOptions = string[]
type ObjectEmitsOptions = { [key: string]: EmitValidator | null }
type EmitValidator = (...args: unknown[]) => boolean
细节
发出的事件可以以两种形式声明:
- 使用字符串数组的简单形式
- 使用对象的完整形式,其中每个属性键是事件的名称,值是
null
或验证器函数。
验证函数将接收传递给组件的$emit
调用的附加参数。例如,如果调用 this.$emit('foo', 1)
,则 foo
的相应验证器将收到参数 1
。验证器函数应返回一个布尔值以指示事件参数是否有效。
请注意,emits
选项会影响组件接收的哪些事件侦听器被视为组件事件侦听器与原生 DOM 事件侦听器。已声明事件的侦听器不会添加到组件的根元素中,并且将从组件的$attrs
对象中删除。有关详细信息,请参阅Fallthrough Attributes。
示例
数组语法:
export default {
emits: ['check'],
created() {
this.$emit('check')
}
}
对象语法:
export default {
emits: {
// no validation
click: null,
// with validation
submit: (payload) => {
if (payload.email && payload.password) {
return true
} else {
console.warn(`Invalid submit event payload!`)
return false
}
}
}
}
相关用法
- Vue.js extends用法及代码示例
- Vue.js effectScope()用法及代码示例
- Vue.js expose用法及代码示例
- Vue.js useSSRContext()用法及代码示例
- Vue.js app.directive()用法及代码示例
- Vue.js mergeProps()用法及代码示例
- Vue.js app.config.warnHandler用法及代码示例
- Vue.js pipeToWebWritable()用法及代码示例
- Vue.js app.use()用法及代码示例
- Vue.js v-pre用法及代码示例
- Vue.js h()用法及代码示例
- Vue.js serverPrefetch用法及代码示例
- Vue.js customRef()用法及代码示例
- Vue.js <Transition>用法及代码示例
- Vue.js inject()用法及代码示例
- Vue.js mixins用法及代码示例
- Vue.js ComponentCustomProps用法及代码示例
- Vue.js reactive()用法及代码示例
- Vue.js ComponentCustomProperties用法及代码示例
- Vue.js app.mount()用法及代码示例
- Vue.js <component>用法及代码示例
- Vue.js createRenderer()用法及代码示例
- Vue.js onMounted()用法及代码示例
- Vue.js createApp()用法及代码示例
- Vue.js app.config.errorHandler用法及代码示例
注:本文由纯净天空筛选整理自vuejs.org大神的英文原创作品 emits。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。