【发布时间】:2022-01-06 07:55:34
【问题描述】:
我在 Nuxt 2.15.8 上,我想获得我发出的事件的结果。 我有一个发出事件的子组件。然后在父组件上接收它并做一些 api 调用。我想要一种双向通信,这样我就可以告诉孩子事件已发出,api 调用已发送并已收到结果,所以请采取一些措施! (目前通过将布尔道具传递给孩子并观察它)
我现在在做什么:
我的父组件:
<template>
<childcomponent :result="result" @childEvent="handleEvent" />
</template>
<script>
export default {
components:{ childcomponent },
data(){
return{
result: false
}
}
methods:{
async handleEvent(val){
let res = this.$axios.get(`/example/${val}`)
if(res){
this.result = true
}else{
this.result = false
}
}
}
}
</script>
我的子组件:
<template>
<div @click="doSomething"></div>
</template>
<script>
export default {
props:['result'],
watch:{
result(e){
if(e){
// do something
}
}
}
methods:{
doSomething(){
// do something
this.$emit('childEvent', 'val')
}
}
}
</script>
我知道我可以使用 $nuxt.$emit() 从 parent 发出另一个事件并在 child 上接收它,但我想要一些简单的东西,例如
//child
this.$emit('childEvent', 'val' , (result)=>{
// result of event handler sent from parent
})
// Or
let res = await this.$emit('childEvent', 'val')
if(res){
// do something
}
有可能吗??
【问题讨论】: