在vue项目中我们经常用到组件传值的方法;
接下来我们就封装一个类似于$emit、$on的方法;
在src目录下创建一个observer的文件,里边写上要封装的方法;

const eventList = {};
const $on = (eventName, callback) => {
if (!eventList[eventName]) {
eventList[eventName] = [];
}
eventList[eventName].push(callback);
};
const $emit = (eventName, params) => {
if (eventList[eventName]) {
let arr = eventList[eventName];
arr.map(cb => {
cb(params);
});
}
};
const $off = (eventName, callback) => {
if (eventList[eventName]) {
if (callback) {
let index = eventList[eventName].indexOf(callback);
eventList[eventName].splice(index, 1);
} else {
eventList[eventName].length = 0;
}
}
};
export default {
$on,
$emit,
$off
};
然后写完封装方法后在main.js文件中引入;

在组件调用使用的方法

在组件接收的调用方法

这样就写了一个公共方法来实现组件间传值