上代码
1、爷组件中:
<opItem :row="row" :jumpPath="'/costcontrol/template/detail/'+row.id"
@handleBinduser="handleBinduser"/>
<script setup>
const handleBinduser = async () =>{
console.log(123123);
await initPage()
}
2、父组件——也就是爷组件中的opItem:
<script setup>
const emits = defineEmits(['handleBinduser'])
const 方法 =(item) =>{
子组件({
callback: async res={
emits('handleBinduser')
}
})
}
根据我的一贯作风,我首先认为:
1、vue3也是这个新工作才接触,是不是我的defineEmits使用的有问题
2、可能需要驼峰命名
3、使用nexTtick试试——都成习惯了,经常类似的问题都是如此,实际上emit通信因为nexttick而出问题感觉没有,但是不知道有没有特定情况
根据我的一贯作风,上述猜想都不是,其实原因猜测是:
1、callback是子组件的,放在孙子组件的回调中可能是子组件寻找const emits来触发父组件中的handleBinduser,但是我们定的是父组件中触发爷组件,所以如果你log(emits('handleBinduser'))会是undifind
2、待我研究
解决方案:
1、子组件内使用defineEmits,父组件内设置handleBinduser方法,让子触发父
弊端嘛就是,太麻烦了,本来就是父和爷组件,现在还要多一个子触发父,而且公用的一个子组件,懒得写
2、感觉这样舒服
爷组件中:
<opItem :row="row" :jumpPath="'/costcontrol/template/detail/'+row.id"
@handleBinduser="handleBinduser"/>
<script setup>
const handleBinduser = async () =>{
子组件({
callback: async res={
await initPage()
}
})
}
父组件——也就是爷组件中的opItem:
<script setup>
const emits = defineEmits(['handleBinduser'])
const 方法 =(item) =>{
emits('handleBinduser')
}
黑暗笼罩万物,我将是黑暗中最后的那道曙光,以雷霆,击碎黑暗