Vue.js 仅用于一个视图的事件总线

Vue.js 仅用于一个视图的事件总线,vue.js,Vue.js,我需要创建一个只在一个页面上工作的事件总线,这很重要,因为我有几个页面(视图)具有相同的事件侦听器名称。还有一些组件也是由组件组成的,我不能只使用全局事件总线。您会采取哪种方法?对于使用事件总线的解决方案,我会给组件一个属性作为标识,让我们将其命名为customId。您可以使用诸如nanoid之类的库作为默认值,并为目标页面设置自定义库 export default { name: 'MyComponent', props: { customId: { type:

我需要创建一个只在一个页面上工作的事件总线,这很重要,因为我有几个页面(视图)具有相同的事件侦听器名称。还有一些组件也是由组件组成的,我不能只使用全局事件总线。您会采取哪种方法?

对于使用事件总线的解决方案,我会给组件一个属性作为标识,让我们将其命名为
customId
。您可以使用诸如
nanoid
之类的库作为默认值,并为目标页面设置自定义库

export default {
  name: 'MyComponent',
  props: {
    customId: {
       type: String,
    }
  },
  data() {
    return {
      innerId: this.customId || nanoid(),
    }
  }
}
<my-component custom-id="event-listener" />
在目标页面中

export default {
  name: 'MyComponent',
  props: {
    customId: {
       type: String,
    }
  },
  data() {
    return {
      innerId: this.customId || nanoid(),
    }
  }
}
<my-component custom-id="event-listener" />

问题是什么还不清楚。如果您从一个组件发出事件,则它适用于该组件。如果您全局发出事件,请使用名称空间以避免名称冲突。您是否需要eventbus或尚未学习@something=“”、this.$emit('something')?