Vuejs2 将事件从嵌套子级传递到Vue中的父级
我正在开发一个Vue组件,该组件将在不同的项目中重复使用(并将通过Vuejs2 将事件从嵌套子级传递到Vue中的父级,vuejs2,vue-component,vuex,Vuejs2,Vue Component,Vuex,我正在开发一个Vue组件,该组件将在不同的项目中重复使用(并将通过npm install…)提供),主要问题是如何处理事件发射 组件本身包含几个嵌套的子元素,如: component-parent |-child 1 |-child 2 |-child 3 |-child 4 当组件包含在某个项目中时,组件父级将公开从整个组件发出的所有事件。并且正在考虑如何将组件内事件传递给组件父级。例如,如果我想将事件从child 4传递到component paren
npm install…
)提供),主要问题是如何处理事件发射
组件本身包含几个嵌套的子元素,如:
component-parent
|-child 1
|-child 2
|-child 3
|-child 4
当组件包含在某个项目中时,组件父级
将公开从整个组件发出的所有事件。并且正在考虑如何将组件内事件传递给组件父级
。例如,如果我想将事件从child 4
传递到component parent
,那么child 4
将发送到child 3
,该子3将发送到child 2
,最后发送到component parent
这样的工作流程运行良好,但看起来不太实用
我发现可以使用EventBus
,这似乎是一个更优雅的解决方案,但它似乎不是很受欢迎。EventBus
是否可以自由使用,或者它被认为是一种有点老套的解决方法
还有一个关于使用
vuex
的问题。如果组件本身中包含vuex
,是否可以将其发射到项目组件(包含我的组件)?在我的组件中包含vuex
将导致主项目有两个vuex
实例。有这样的多个存储的拦截器吗?经过一些测试,我决定使用EventBus
<代码>事件总线允许在组件之间发送/接收事件。组件可以是同一父树的一部分,也可以位于完全不同的父树上。更多信息
但通常应该创建event bus.js
文件
import Vue from 'vue';
export const EventBus = new Vue();
然后导入将使用EventBus
机制的任何组件中
<script>
// Import the EventBus we just created.
import { EventBus } from './event-bus.js';
...
任何加载了EventBus
的组件都可以侦听以下事件:
EventBus.$on('i-got-clicked', clickCount => {
console.log(`Oh, that's nice. It's gotten ${clickCount} clicks! :)`)
});
要停止侦听事件,请执行以下操作:
EventBus.$off('i-got-clicked');
我个人觉得
EventBus
非常简单和有用,但我可能只在开发其他项目中包含的组件时才使用它们。对于相同的项目组件,Vuex
已经足够了经过一些测试,我决定使用EventBus
<代码>事件总线允许在组件之间发送/接收事件。组件可以是同一父树的一部分,也可以位于完全不同的父树上。更多信息
但通常应该创建event bus.js
文件
import Vue from 'vue';
export const EventBus = new Vue();
然后导入将使用EventBus
机制的任何组件中
<script>
// Import the EventBus we just created.
import { EventBus } from './event-bus.js';
...
任何加载了EventBus
的组件都可以侦听以下事件:
EventBus.$on('i-got-clicked', clickCount => {
console.log(`Oh, that's nice. It's gotten ${clickCount} clicks! :)`)
});
要停止侦听事件,请执行以下操作:
EventBus.$off('i-got-clicked');
我个人觉得EventBus
非常简单和有用,但我可能只在开发其他项目中包含的组件时才使用它们。对于相同的项目组件,Vuex
就足够了