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

发布于 2022-09-13 00:29:26 字数 745 浏览 20 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

场罚期间 2022-09-20 00:29:26

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

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

        就是给 vm 注入一个  _promise 属性,在组件里面调用
        vm.component.proxy._promise = {resolve,reject}
    });


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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文