Vue.js 3-Ereignisbus
P粉905144514
2023-08-24 18:08:45
<p>Wie erstelle ich einen Event-Bus in Vue 3? </p>
<hr />
<p>In Vue 2 ist es: </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>In Vue 3 ist <code>Vue</code> kein Konstruktor mehr und <code>Vue.createApp({});</code> gibt einen Wert ohne <code>$ zurück ;/code> Objektcode> und <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 中: