使用 emit 需要 先注册
在 setup 中 使用emit的时候如果不注册会给父组件反馈两次。
详情如下
ponent('ls-unit', {props: {selectedItems: {default: {}}},emits: ['change'], // 这里需要先注册setup(props, {emit }){const data = reactive({source: [{id: 0, text: 'A'},{id: 1, text: 'B'},],selected: {}})const fn = ()=>{console.log('1') // 正常输出一次emit('change', data.selected)// 如果不注册 emit会给父组件发两次响应!!}return {...toRefs(data),fn,}},template: `<select @change="fn" v-model="selected"><option :value="item" v-for="item in source" :key="item.id">{{item.text}}</option></select>`})