如何用Vue的h函数封装命令式的dialog组件?

摘要:场景 有些时候我们的页面是有很多的弹窗 如果我们把这些弹窗都写html中会有一大坨 因此:我们需要把弹窗封装成命令式的形式 命令式弹窗使用弹窗的组件 <template> &amp
场景 有些时候我们的页面是有很多的弹窗 如果我们把这些弹窗都写html中会有一大坨 因此:我们需要把弹窗封装成命令式的形式 命令式弹窗 // 使用弹窗的组件 <template> <div> <el-button @click="openMask">点击弹窗</el-button> </div> </template> <script setup lang="ts"> import childTest from '@/components/childTest.vue' import { renderDialog } from '@/hooks/dialog' function openMask(){ // 第1个参数:表示的是组件,你写弹窗中的组件 // 第2个参数:表示的组件属性,比如:确认按钮的名称等 // 第3个参数:表示的模态框的属性。比如:模态宽的宽度,标题名称,是否可移动 renderDialog(childTest,{},{title:'测试弹窗'}) } </script> // 封装的弹窗 import { createApp, h } from "vue"; import { ElDialog } from "element-plus"; export function renderDialog(component:any,props:any, modalProps:any){ const dialog = h( ElDialog, // 模态框组件 { ...modalProps, // 模态框属性 modelValue:true, // 模态框是否显示 }, // 因为是模态框组件,肯定是模态框的属性 { default:()=>h(component, props ) // 插槽,el-dialog下的内容 } ) console.log(dialog) // 创建一个新的 Vue 应用实例。这个应用实例是独立的,与主应用分离。
阅读全文