需要调研 vue 2 到 vue 3 的迁移方案,来做内部分享。
我看网上貌似目前只有一人翻译了,翻译了前几章。
但是我着急用,只能自己翻了。译者四级没过,全靠有道和谷歌了。
事件 API
概览
$on,$off 和 $once 实例方法被移除。应用程序实例不再实现事件发射器接口。
2.x 语法
在 2.x 中,Vue 实例可用于触发通过事件发射器 API($on,$off 和 $once)强制连接的处理程序。这用于创建 event hubs,以创建在整个应用程序中使用的全局事件侦听器:
// eventHub.js
const eventHub = new Vue()
export default eventHub
// ChildComponent.vue
import eventHub from './eventHub'
export default {
mounted() {
// adding eventHub listener
eventHub.$on('custom-event', () => {
console.log('Custom event triggered!')
})
},
beforeDestroy() {
// removing eventHub listener
eventHub.$off('custom-event')
}
}
// ParentComponent.vue
import eventHub from './eventHub'
export default {
methods: {
callGlobalCustomEvent() {
// if ChildComponent is mounted, we will have a message in the console
eventHub.$emit('custom-event')
}
}
}
3.x 语法
我们从实例中完全删除了 $on,$off 和 $once 方法。$emit 仍然是现有API的一部分,因为它用于触发由父组件声明式附加的事件处理程序。
迁移策略
可以使用实现 event hubs 接口的外部库(例如 mitt )来替换现有的 event hubs。
在兼容性版本中也可以支持这些方法。