vue3全局弹窗组件

vue3 antd项目实战——修改和增加公用一个弹窗(页面组件传值) 一篇文章教你学会如何在vue antd项目实战中将修改和增加共用一个表单的骚操作 阅读详情
  1. 使用defineComponent 定义一个组件
  2. 使用h函数渲染组件
  3. 使用createApp 创建组件实例
  4. 使用mount 插入组件
  5. 使用unmount移除组件
定义组件
export function Dialog(config) {
  const id = 'MwDialog'
  const Comp = defineComponent({
    props: {
      config: {
        type: Object,
        default: () => ({})
      }
    },
    setup(props) {
      const { showCancel = true, title = '', content = '', confirmCallback = () => { }, cancelCallBack = () => { } } = props.config
      const state = reactive({ class: 'mw-dialog bounce-enter' })
      const onCancel = () => {
        console.log('点击了取消')
        removeComp(dialogRef, id)
        cancelCallBack()
      }
      const onConfirm = () => {
        console.log('点击了确认')
        removeComp(dialogRef, id)
        confirmCallback()
      }
      return () => h('div', { class: state.class }, [
        h('div', { class: 'dialog' }, [
          h('div', { class: 'dialog-header' }, title),
          h('div', { class: 'dialog-content' }, [h('div', { class: 'dialog-message' }, content),]),
          h('div', { class: 'dialog-footer' }, [
            showCancel ? h('div', { onClick: onCancel, class: 'dialog-button dialog-button-cancel' }, '取消') : null,
            h('div', { onClick: onConfirm, class: 'dialog-button dialog-button-confirm' }, '确认')]),
        ])]
      )
    }
  });
  appendComp(dialogRef, Comp, id, config)
}
// 插入组件
export function appendComp(ref, Comp, id, config) {
  const parentId = 'mwPage'
  const div = document.createElement('div');
  div.setAttribute('id', id)
  const page = document.getElementById(parentId)
  page?.appendChild(div);
  const app = createApp(Comp, {config});
  app.mount(div);
}
// 移除组件
export function removeComp(ref, id) {
  const div = document.getElementById(id)
  div?.remove()
  ref?.unmount()
}
调用组件
var title = "确认框";
var msg = "我是一个confirm类型的弹窗(确认框)~点击按键改变标签组件文字哦!";
var confirmCallback = function () {
  alert("点击确认事件回调");
};
var cancelCallback = function () {
  alert("点击取消事件回调");
};
Dialog("confirm", title, msg, confirmCallback, cancelCallback);
样式
.mw-dialog {
  position: fixed;
  top: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, .7);
  display: flex;
  place-content: center center;


  .dialog {

    position: fixed;
    top: 50%;
    left: 50%;
    width: 85%;
    overflow: hidden;
    font-size: 16px;
    background-color: #fff;
    border-radius: 4px;
    transform: translate3d(-50%, -50%, 0);
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    transition: .3s;
  }

  .dialog-header {
    padding-top: 24px;
    font-weight: 500;
    text-align: center;
  }

  .dialog-button {
    width: 100%;
    height: 50px;
    line-height: 50px;
    color: #323233;
    text-align: center;
  }

  .dialog-button-confirm {
    color: #1989fa;
  }

  .dialog-button-cancel {
    border-right: .5px solid #ebedf0;
  }

  .dialog-message {
    max-height: 400px;
    white-space: pre-wrap;
    text-align: center;
    padding: 12px 24px 24px 24px;
    font-size: 14px;
  }

  .dialog-footer {
    border-top: .5px solid #ebedf0;
    display: flex;
  }
}

【uniapp】【Vue3】 超简单全局自定义弹窗组件Modal 阅读详情

相关推荐

UniApp+Vue3全局弹窗组件终极方案:Vite插件一键注入(附分包注意事项)

本文介绍了UniApp+Vue3开发中全局弹窗组件的终极解决方案,通过Vite插件实现一键注入,避免了传统手动引入的代码冗余和维护困难。详细讲解了Vite插件的核心原理、具体实现步骤以及分包场景下的注意事项,帮助开发者提升开发效率和代码质量。

ii567的博客 887

vue3自定义插件(如何将弹窗组件挂载全局)使用

自定义一个提示语弹窗,挂载在vue实例上全局使用。文件,这是我们的弹窗组件。

weixin_49205615的博客 3410

uniapp全局弹窗终极解决方案:手把手教你用Vue3动态挂载组件(附完整源码)

本文详细介绍了Uniapp中实现全局弹窗的终极解决方案,通过Vue3动态挂载组件技术,解决了传统方法在多页面架构下的局限性。文章包含完整源码和实战指南,帮助开发者轻松实现跨页面层级的弹窗功能,提升用户体验和开发效率。

weixin_30555125的博客 217

Vue3封装全局Dialog组件

本文通过封装可多次弹出的 Dialog 组件进一步探索了 Vue3 函数式组件的封装方法

前端咸鱼翻身的博客 3705

别再手动import了!Vue3 + Element Plus 配置全局Message弹窗,一次搞定所有组件调用

本文详细介绍了Vue3 + Element Plus配置全局Message弹窗的三种高效方案,包括通过app.config.globalProperties挂载、使用Provide/Inject实现响应式控制以及封装为Vue插件。这些方法能显著减少代码冗余,提升维护效率,并支持TypeScript类型提示,特别适合中大型项目开发。

weixin_30394669的博客 126

告别重复引入!5分钟搞定UniApp小程序的全局弹窗(Vue3+vite实战)

本文针对UniApp小程序开发中每个页面重复引入弹窗组件的痛点,提出了一种基于Vite插件的优雅解决方案。通过配置@yck-web/vite-plugin-template-inset插件,可在构建时自动向所有页面模板注入全局弹窗组件标签,实现真正的“一次注册,处处可用”,并结合Vue3 Composition API封装了友好的调用接口,大幅提升开发效率与代码可维护性。

weixin_28077113的博客 187

亲测可用,简单三步在vue3中实现全局js调用弹窗组件

vue2的extend创建全局js调用组件在vue3中的替代方法

weixin_61241731的博客 1335

vue3 封装一个全局通用弹窗提示组件(利用js调用 类似于element)

全局直接使用js调用 this.$confirmation() 调用通用提示弹窗可二次封装 点击确认取消后 会有相应的回调 利用的Promise封装的

Vue3 Teleport实战:5分钟搞定全局弹窗组件(附完整代码)

本文详细介绍了Vue3 Teleport(传送组件)在实现全局弹窗组件中的实战应用。通过剖析传统弹窗的样式定位与层级冲突问题,阐述了Teleport的核心优势。文章提供了从基础配置、动态目标绑定到构建可复用弹窗组件的完整代码与最佳实践,并分享了全局弹窗管理、性能优化等高级技巧,帮助开发者高效解决弹窗开发痛点。

weixin_29006187的博客 232

51单片机也能玩转信号发生器?手把手教你用DAC0832和LM358输出四种标准波形

本文详细介绍了如何使用51单片机和DAC0832芯片搭配LM358运放,自制低成本信号发生器,实现正弦波、矩形波、三角波和锯齿波四种标准波形的输出。从硬件选型、电路设计到编程实现,手把手教你完成这一实用电子项目,总成本不到50元,适合电子爱好者和学生实践。

weixin_30530939的博客 551

深入解析AXI-Stream协议中的TVALID与TREADY握手时序

本文深入解析AXI-Stream协议中TVALID与TREADY的握手时序,通过实际案例和代码示例详细说明三种典型握手场景及其应用。文章还探讨了常见握手失败案例的解决方法,并介绍了TLAST、TKEEP等高级信号的使用技巧,帮助开发者优化FPGA设计中的数据传输效率。

weixin_29200485的博客 341

Vue3 弹窗封装终极方案:告别弹窗地狱,实现全局 Promise 化 Dialog 服务|Vue 核心语法与组件模式篇

本文由中后台前端工程师 Eugene 带你从实战出发,彻底解决 Vue 项目中常见的 “弹窗地狱” 问题。从原始模板式弹窗的痛点讲起,一步步带你封装可命令式调用、Promise 化的全局 Dialog 服务。文中包含完整可直接复制的代码、类型定义、动态创建实例、自定义组件渲染、表单校验、防重复关闭、DOM 清理等实战踩坑点,并进一步抽象成通用覆盖层工厂,同时支持抽屉等场景。全程小白能看懂、项目能直接用,帮你告别冗余状态与回调嵌套。

中后台前端工程师,专注技术本质,用通俗语言讲清硬核知识点,持续输出成长干货。 1249

Android存储方案对比(SharedPreferences 、 MMKV 、 DataStore)

简介:本文介绍了Android开发中常用的键值对存储方案,包括SharedPreferences、MMKV和DataStore,并且对比了它们在性能、并发处理、易用性和稳定性上的特点。通过实际代码示例,帮助开发者根据项目需求选择最适合的存储方案,提升应用性能和用户体验。

LiuYong_01的博客 1789

vue2和vue3的全局弹窗组件封装

为什么要封装组件 封装组件是为了能够更加便捷、快速的进行业务功能的开发。组件可以实现一些类似功能的复用及与其它业务逻辑的解耦。在开发中,我们难免会写很多类似的、重复的代码,有些相似的功能但涉及的字段有一些不一样。这时候可以把那些相同的功能,抽出来封装成组件,通过组件引用方式就很省事了。 建立一个弹窗的模板: 在confirm.vue中写自己的代码,如下: <template> <div id="confirm" class="complant" v-if="isSho

qq_33235582的博客 2755

人工智能混合编程实践:C++调用封装好的DLL进行异常检测推理

C++、Python、ONNX、人工智能、异常检测、Anomalib 2.1.0

FriendshipTang的博客 170

PCL 使用RANSAC拟合平面【2026最新版】

RANSAC拟合平面算法原理和实现流程详解以及最大迭代次数和内点期望概率的设置方法。最后再对拟合后的平面法向量与向量(1,1,1)进行定向。博客长期更新,最近一次更新时间为:2026年4月24日。

点云侠的博客 42万+

Vue3 Teleport实战:5分钟搞定全局弹窗组件(附Element Plus集成)

本文详细介绍了Vue3 Teleport传送组件的实战应用,通过构建全局弹窗组件解决传统弹窗因父容器样式导致的定位与层级冲突问题。文章结合Element Plus组件库,提供了从基础组件封装到全局弹窗管理器的完整方案,并探讨了在复杂场景下的高级应用,帮助开发者快速实现健壮、可维护的弹窗功能。

j7k8l的博客 198

安卓开发工程师在车载项目中的角色与技术实践

本文全面探讨了安卓开发工程师在车载项目中的关键角色,重点分析了技术栈(Kotlin/Java/Gradle)、岗位职责和任职要求。文章详细解读了车载安卓开发的核心技能,包括架构设计、性能优化和缺陷修复,并提供了20个针对性面试问题及答案。特别强调了车载环境的特殊需求,如硬件集成、安全认证和实时性要求。通过技术深度与实践案例的结合,为开发者和企业提供了从需求分析到系统优化的完整指导,旨在提升车载安卓开发的专业水平和招聘效率。

郑伟强dev的专栏 131

Vue3封装全局弹窗组件(结合el-dialog)

在main.ts中 import App from "./App.vue"; import SubDialog from '@/components/sub.js' let instance: any = null; instance = createApp(App) instance.use(SubDialog) instance.mount(document.getElementById("app")} 在components下的sub.js import SubDialog from './SubD

HelloWorldLJY的博客 9813

fast-lio系列改进版本

2.回环检测的优化结果,更新到FAST-LIO2的当前帧位姿中,幷进行ikdtree的重构,进而更新submap。其它的效果还不清楚,实测lio部分稳定性很好。用fast-lio_slam就很稳定。融合了fast-lio2和sc-pgo,两部分分开运行,SC-PGO从FAST-LIO2节点获取里程计和激光雷达点云主题。的作者kim在FAST-LIO2的基础上,添加SC-PGO模块,通过加入ScanContext全局描述子,进行回环修正,SC-PGO模块与FAST-LIO2解耦,非常方便,很优秀的工作。

z1872385的博客 3189

基于Simulink的光伏电站AGC/AVC协调控制仿真

摘要:本文基于Simulink构建光伏电站AGC/AVC协调控制仿真模型,通过分层控制架构实现有功-无功解耦与储能协同。系统包含100kW光伏阵列、50kWh储能及逆变器组件,采用PID控制器实现AGC频率调节(±0.1Hz)和Q-V下垂控制实现AVC电压稳定(±2%)。仿真验证了三种工况下协调控制的有效性:正常调度时储能充电20kW;负荷突增时储能15kW放电维持频率;光照骤降时储能30kW放电并吸收2kVAR无功稳定电压。结果表明,该方案可使频率/电压偏差分别控制在0.1Hz和7.6V内,响应时间&lt

xiaoheshang_123的博客 235

vue3自定义全局对象调用弹窗组件

vue3自定义指令调用弹窗组件

ldbslq的博客 2186

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Vue 3 Teleport 穿越组件树的神器!实战案例带你玩转弹窗、模态框和全局组件

今天来给大家分享一个在 Vue 3 中非常实用又酷炫的功能 —— Teleport! 如果你做过弹窗、Toast、模态框、全屏遮罩、导航栏菜单,那你一定会遇到一个问题: “我的组件被父级容器限制了样式,怎么都出不去!”😭 别担心!Vue 3 的 Teleport 就是为了解决这个问题而生的——它可以让你的组件“穿越”到页面任意位置,比如直接插入到 <body> 下,完美解决层级问题!

Jacklx888的博客 516

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

vue3Arco Notification组件的自定义内容,全局弹窗

可以通过Notification组件实现全局弹窗,自定义内容底部,结合renderContent方法,可以实现自定义节点内容,RenderFunction实现底部内容

qq_46053295的博客 794

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Vue3 Teleport 使用指南:高效处理模态框与全局弹窗

在复杂的单页应用中,模态框和弹窗等 UI 组件经常出现在顶层节点,以保证其不受父组件的影响。Vue3 引入了 Teleport 功能,让我们可以将组件“传送”到 DOM 的指定位置,极大简化了模态框与全局弹窗的实现。本指南将详细讲解 Teleport 的使用方法和实际场景下的应用示例,帮助你在 Vue3 项目中实现高效的 UI 控制。Teleport 是 Vue3 中的新特性,用于将组件的渲染位置传送到指定的 DOM 元素。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 1911
上一篇: 掌握CSS变量——打造更简洁、可维护的前端样式
下一篇: 微信小程序中使用字体图标,解决字体图标包过大的问题
wakangda
博客等级 码龄8年 445粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值