我们在vue项目开发过程中总是遇到各种个样的全局弹窗(权限提醒,alert提示,缴费提醒),这些全局弹窗全站很多地方在调用,调用调用很蛮烦,将这些组件部署到全局位置,又无法做到按需加载,而且部署到全局的组件数据回传(比如检测缴费是否完成)又是一个问题,我们又得借助vuex或者event来传递,又回造成vuex的滥用。
我们举一个简单的场景:
如果我们要在vue里实现一个类似原生alert的弹出框,大概长这个样子。
确定
否定
export default {
props: ['text'],
data() {
return {};
},
methods: {
ok() {
this.$emit('ok');
},
cancel() {
this.$emit('cancel');
}
}
}
如果有一个页面,需要使用这个组件,即使是空页面,也要做下面代码里描述的所有事情
打开alert
import uiAlert from '******.vue'; // 引用组件
export default {
data() {
return {
isShow:false //控制弹窗是否显示的开关
};
},
methods: {
showAlert() { //控制弹窗显示
this.isShow = true;
},
fine() { //弹窗打开后点击ok的事件绑定
this.isShow = false;
// 点击ok触发的事情
},
cancel() { //弹窗打开后点击cancel的事件绑定
this.isShow = false;
// 点击cancel触发的事情
}
},
components:{uiAlert}
}
汇总一下,做的事情有
1、引用组件
2、设置控制显示的变量开关
3、设置弹出组件的函数
4、设置多个回调事件,监听返回值
但是我们想一下,假如我们可以像调用原生组件类似的形式,一个函数搞定,会更方便。获取返回值的方式比如promise、回调。比如我们封装成返回promise的一个函数,代码可能像下面这样。
打开alert
im

本文介绍了如何在Vue项目中实现一个全局按需动态加载的弹窗组件,通过函数化封装,使得调用更加方便。利用render函数在全局模板中动态添加和移除组件,借助事件总线实现组件的创建和销毁。文章提供了具体的实现步骤和优化方案,包括支持同时弹出多个组件。
最低0.47元/天 解锁文章
1898

被折叠的 条评论
为什么被折叠?



