项目场景:
vue3.0中子组件向父组件传递自定义事件时控制台报出警告如下:
在这里插入图片描述
意思是:事件监听器(变化)传递给组件但不能自动继承,因为组件呈现片段或文本根节点。如果侦听器的目的是成为一个组件自定义事件监听器,声明它使用“发出”选项。
原因分析:
我在vue3.0中子组件向父组件传递自定义事件时,一直都是如下面这样写
export default {
setup(props, {emit}) {
emit('getData')
emit('stopChange')
..
}
}
父组件能拿到事件,并且控制台也不会报出警告。
但是今天却报出了上面的警告信息,根据警告信息提示,需要在子组件中通过emits注册自定义事件,于是我修改代码如下:
解决方案:
需要在子组件中通过emits注册自定义事件
export default {
emits: ['edit', 'custom', 'downloadForm', 'formChange', 'choiceAccountNum', 'clearData'],
setup(props, {emit}) {
emit('edit')
emit('custom')
emit('downloadForm')
emit('formChange')
emit('choiceAccountNum')
emit('clearData')
..
}
}
更改后问题解决。