Vue.js 3 事件总线
P粉905144514
2023-08-24 18:08:45
<p>如何在 Vue 3 中创建事件总线?</p>
<hr />
<p>在 Vue 2 中,它是:</p>
<pre class="brush:js;toolbar:false;">export const bus = new Vue();
</pre>
<pre class="brush:js;toolbar:false;">bus.$on(...)
bus.$emit(...)
</pre>
<hr />
<p>在 Vue 3 中,<code>Vue</code> 不再是构造函数,并且 <code>Vue.createApp({});</code> 返回一个没有 <code>$on</code> 的对象 code> 和 <code>$emit</code> 方法。</p>
在 Vue.js 版本 3 上,您可以使用第三方库,也可以使用以发布者-订阅者(PubSub 概念)编程模式编写的功能。
事件.js
index.js
按照官方文档中的建议,您可以使用 mitt 库在组件之间调度事件,假设我们有一个侧边栏和
header 其中包含一个关闭/打开侧边栏的按钮,我们需要该按钮来切换侧边栏组件内的某些属性:
在 main.js 中导入该库并创建该发射器的实例并定义为 全局属性:
安装:
用法:
在标头中发出带有一些负载的
toggle-sidebar
事件:在侧边栏中接收带有有效负载的事件:
对于那些使用组合 API 的人,他们可以使用
emitter
,如下所示:创建文件 src/composables/useEmitter.js
从那里开始,您可以使用
useEmitter
,就像使用useRouter
一样:使用组合 API
您还可以受益于新的组合 API 并定义可组合事件总线:
eventBus.js
在组件 A 中执行以下操作:
在组件 B 中: