摘要

移除 $on$off$once 实例方法。Vue 实例不再实现事件触发器接口。

基本范例

N/A

动机

Vue 1.x 实现了 AngularJS 类似的组件事件系统,有 $dispatch$broadcast,树形的组件可以通过向上和向下发送事件进行交流。

在 Vue2 中,我们删除了 $dispatch$broadcast,转而采用更多的状态驱动的数据流(用 props 向下传递数据,用 events 来向上传递数据)。

在 Vue2 的 API 中,$emit 可以用来触发父组件声明的附加的事件处理程序(在模版或者渲染函数中),但也可以通过触发事件发射器 API($on$off$once)强制附加的处理程序。这实际上是一个重载:完整的事件发射器 API 并不是典型的组件间数据流的一部分。它们很少被使用,也没有充分的理由让它们通过组件实例被暴露。因此本 RFC 建议删除 $on$off$once 实例方法。

具体设计

N/A

缺点

N/A

备选方案

N/A

采纳策略

在 Vue2 中,事件发射器 API 最常见的用法是,使用一个空的 Vue 实例作为一个事件中心。这可以通过使用一个实现了事件发射器接口的外部库来替代,例如 mitt

这些方法在兼容性构建中也可以得到支持。

没有解决的问题

N/A