vue2中可以使用$on,$emit,$off 来发射,监听数据,但是vue3中取消了它们,因此要想新的办法。我们可以用mitt来实现。
首先,安装mitt
npm install mitt --save
然后组件内引入
import mitt from 'mitt'
正式使用,先创建监听器,一个组件emit数据,另一个组件on数据
validateForm组件内:
// 创建监听器
export const emitter = mitt()
setup(){
// 创建存放监听来的函数,采用emit监听
let funcArr:ValidateFunc[] = []
const callback = (func:ValidateFunc)=>{
funcArr.push(func)
}
emitter.on('form-item-created',callback)
//在组件onUnmounted时取消对该事件的监听
onUnmounted(()=>{
emitter.off('form-item-created',callback)
funcArr=[]
})
}
validateInput组件:
//先导入创建好的监听器
import {emitter} from './ValidateForm.vue'
setup(){