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