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的方法,
或者这种思路错误了?应该怎么做才能达到类似于这样的效果

阅读 4k
2 个回答

其实你就是希望有个回调而已:
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,

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题