【发布时间】:2021-03-08 21:17:37
【问题描述】:
我已经设置了mitt 并尝试将事件分派给另一个组件,但我遇到了困难,因为在setup() 方法中它没有this 用于访问应用程序实例。
这是我尝试过的:
import App from './App.vue'
const el = document.getElementById('app')
import mitt from 'mitt';
const emitter = mitt();
const app = createApp(App)
app.config.globalProperties.emitter = emitter;
app.mount(el);
而在组件中,我想调度一个事件
export default {
setup() {
function toggleSidebar() {
this.emitter.emit('toggle-sidebar');
console.log(this); // binds to setup(), not the vue instance.
}
}
}
由于this 不存在,我无法访问.emitter。我错过了什么?如何在 Vue 3 composition api 中使用官方推荐的手套?
顺便说一句,如果我使用 v2 语法,我可以访问this.emitter。但是我对 Composition API 的方式很好奇
export default {
mounted() {
console.log(this.emitter); // works
}
}
【问题讨论】:
标签: javascript vue.js vuejs3 event-bus vue-composition-api