feat(runtime-core): skip emit warn if has equivalent onXXX prop

This commit is contained in:
Evan You
2020-04-16 11:27:52 -04:00
parent bfd6744fb1
commit 0709380c5f
2 changed files with 26 additions and 6 deletions

View File

@@ -11,6 +11,7 @@ import {
import { ComponentInternalInstance } from './component'
import { callWithAsyncErrorHandling, ErrorCodes } from './errorHandling'
import { warn } from './warning'
import { normalizePropsOptions } from './componentProps'
export type ObjectEmitsOptions = Record<
string,
@@ -48,10 +49,13 @@ export function emit(
const options = normalizeEmitsOptions(instance.type.emits)
if (options) {
if (!(event in options)) {
warn(
`Component emitted event "${event}" but it is not declared in the ` +
`emits option.`
)
const propsOptions = normalizePropsOptions(instance.type.props)[0]
if (!propsOptions || !(`on` + capitalize(event) in propsOptions)) {
warn(
`Component emitted event "${event}" but it is neither declared in ` +
`the emits option nor as an "on${capitalize(event)}" prop.`
)
}
} else {
const validator = options[event]
if (isFunction(validator)) {