Vue3 优雅的模态框封装方案

Mr Mao’blog - gitee.io/mao-blog

Vue3 优雅的模态框封装方法 - 初探

Vue3 优雅的模态框封装方法 - 实践

Vue3 优雅的模态框封装方法 - 定制

上次说到利用虚拟节点和瞬移组件制作模态框组件,并支持 template 中调用和 JavaScript 中调起

但实际上,我们在工作中不会花这么大的精力去做这些繁琐的工作,一般都会直接使用组件库的弹出层去修改(例如 element-plus

但所涉及到的问题又回到了通篇都在描述的点上:

不通用,不能很方便的调用(例如我想在 js / ts 中调用我该怎么办)

结果就是又回到了 template 中一个个的当做组件使用

但并不是不能解决,在第二章中要实现无非就是将一个 vnode 节点渲染到 html 当中,用某种手段传入销毁的方法给予组件自身。

经过了长时间的积累…(咕咕咕

我制作了 unoverlay-vue,他用于更加简单方便制作和二次封装 overlay 层。

原理大同小异,就是利用 vue render 和闭包得到销毁组件自身的方法给予组件。

这个工具可以用于:

  • 制作类似于 element-plus/naiveui/vuetifyjs/vant... 的 Message 或 Dialog
  • 同时支持两种调用方式(组件 / javascript-api)
  • 使用现有组件库(如 element-plus)集成和定制化功能

使用 unoverlay-vue 定制化组件

element-plus@2.15.7(dialog) 为例(你也可以使用其他组件库)

⚙️ Install

pnpm add unoverlay-vue
# Or Yarn
yarn add unoverlay-vue

在 main.js 中全局安装可以使所有 overlay 继承应用上下文(appContext)

// main.js
import {
    createApp } from 'vue'
import App from './App.vue'
import unoverlay from 'unoverlay-vue'

const app = createApp(App)
app.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值