vue3子组件通过emit反馈给父组件,会触发两次。
使用 emit 需要 先注册在 setup 中使用emit的时候如果不注册会给父组件反馈两次。详情如下vue.component('ls-unit', {props: {selectedItems: {default: {}}},emits: ['change'],//这里需要先注册setup(props, { emit })
·
使用 emit 需要 先注册
在 setup 中 使用emit的时候如果不注册会给父组件反馈两次。
详情如下
vue.component('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>
`
})
更多推荐
已为社区贡献2条内容
所有评论(0)