vue-bus: 一个 Vue.js 事宜中间插件

vue-bus

一个 Vue.js 事宜中间插件,同时支撑 Vue 1.0 和 2.0

缘由

Vue 2.0 从新梳理了事宜体系,由于基于组件树构造的事宜流体式格局实在是让人难以明白,并且在组件构造扩大的历程中会变得愈来愈软弱。虽然依旧保留了父子组件间的事宜流,但有诸多限定,比方不支撑跨多层父子组件通讯,也没有处理兄弟组件间的通讯题目。

Vue 引荐运用一个全局事宜中间来分发和治理运用内的一切事宜,详见文档。这是一个最好实践,同时适用于 Vue 1.0 和 2.0。你固然能够声明一个全局变量来运用事宜中间,但你假如在运用 webpack 之类的模块体系,这明显不合适。每次运用都手动 import 进来也很不轻易,所以就有了这个插件:vue-bus

vue-bus 供应了一个全局事宜中间,并将其注入每个组件,你能够像运用内置事宜流一样轻易的运用全局事宜。

装置

$ npm install vue-bus

假如在一个模块化工程中运用它,必需要经由过程 Vue.use() 明确地装置 vue-bus:

import Vue from 'vue';
import VueBus from 'vue-bus';

Vue.use(VueBus);

假如运用全局的 script 标签,则不必云云(手动装置)。

运用

监听事宜和消灭监听

// ...
created() {
  this.$bus.on('add-todo', this.addTodo);
  this.$bus.once('once', () => console.log('这个监听器只会触发一次'));
},
beforeDestroy() {
  this.$bus.off('add-todo', this.addTodo);
},
methods: {
  addTodo(newTodo) {
    this.todos.push(newTodo);
  }
}

触发事宜

// ...
methods: {
  addTodo() {
    this.$bus.emit('add-todo', { text: this.newTodoText });
    this.$bus.emit('once');
    this.newTodoText = '';
  }
}

注重:$bus.on $bus.once $bus.off $bus.emit 只是 $bus.$on $bus.$once $bus.$off $bus.$emit 的别号。 详见 API

项目地点

GitHub,喜好的话给个 Star 吧 :P

    原文作者:哆啦P股
    原文地址: https://segmentfault.com/a/1190000007443133
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞