Vue3 全局js方法 怎么获取组件中emit方法?

Vue3 全局js方法 怎么获取组件中emit方法?

<template>

<div @click="onClick"></div>

</template>

<script lang="ts">

............

............

export default defineComponent({

setup(props, context) {

const onClick=()=>{

context.emit("onA","向上抛一个方法")

}

.....

}

})

</script>

// A.ts 里面

import A from "@/components/A.vue";

export default {

install(app: any) {

app.config.globalProperties.$A= (config: any) => {

let vm = createVNode(A, {});

vm.appContext = app._context;

render(vm, dom);

});

}

}

}

请问如果我想这样去把一个组件设计成一个全局JS函数方法访问,我如何能够监听 A.vue组件里面 emit的方法,
或者这种思路错误了?应该怎么做才能达到类似于这样的效果


回答:

其实你就是希望有个回调而已:
1、可以试试, vm.$on("xxx",()=>{ })。 (这个方法我也没试过)

2、这个方法我试过,可以用
new Promise((resolve,reject)=>{

        就是给 vm 注入一个  _promise 属性,在组件里面调用

vm.component.proxy._promise = {resolve,reject}

});

3、关于全局弹窗,可以参考我的demo代码 https://gitee.com/muand/vue3-...


回答:

EventBus,虽然Vue3 官方已经不推荐EventBus的实现方法,但是还是有第三方的EventBus,

以上是 Vue3 全局js方法 怎么获取组件中emit方法? 的全部内容, 来源链接: utcz.com/p/935660.html

回到顶部