vue组件object_vue全局弹窗通用解决方案——组件函数化

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

我们在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>