当前位置:实例文章 » HTML/CSS实例» [文章]vue3+ts+elementui-plus二次封装弹框

vue3+ts+elementui-plus二次封装弹框

发布人:shili8 发布时间:2025-03-08 18:39 阅读次数:0

**Vue3 + TS + ElementUI-Plus 二次封装弹框**

在实际项目中,弹框是非常常见的组件之一。ElementUI-Plus 提供了一个基本的弹框组件,但是我们可能需要对其进行二次封装以适应具体业务需求。在本文中,我们将使用 Vue3 + TS + ElementUI-Plus 来实现一个高级别的弹框组件。

###1. 初始化项目首先,我们需要初始化一个 Vue3 + TS + ElementUI-Plus 的项目。我们可以使用 `vue-cli` 来快速创建一个新项目。

bashnpm install -g @vue/clivue create my-project --template vue3-ts-elementui-pluscd my-project

###2. 创建弹框组件接下来,我们需要创建一个新的 Vue 组件来封装弹框功能。我们可以在 `src` 目录下创建一个新文件 `Dialog.vue`。
bashtouch src/components/Dialog.vue

然后,我们可以编写以下代码:
vue<template>
 <el-dialog :title="title" v-model="visible" width="30%">
 <slot></slot>
 </el-dialog>
</template>

<script lang="ts">
import { defineComponent, ref } from 'vue';
import { ElDialog } from 'element-ui-plus';

export default defineComponent({
 name: 'Dialog',
 components: {
 ElDialog,
 },
 props: {
 title: {
 type: String,
 required: true,
 },
 },
 setup(props) {
 const visible = ref(false);

 return {
 visible,
 };
 },
});
</script>

###3. 封装弹框逻辑在上一步中,我们已经创建了一个基本的弹框组件。现在,我们需要封装一些弹框逻辑来使其更易于使用。在 `src` 目录下创建一个新文件 `dialog.ts`。
bashtouch src/utils/dialog.ts

然后,我们可以编写以下代码:
typescriptimport { ElDialog } from 'element-ui-plus';

interface DialogOptions {
 title: string;
 content?: string | JSX.Element;
 onConfirm?: () => void;
}

export function showDialog(options: DialogOptions) {
 const { title, content, onConfirm } = options;

 const dialog = ElDialog({
 title,
 width: '30%',
 visible: true,
 });

 if (content) {
 dialog.content = content;
 }

 if (onConfirm) {
 dialog.onConfirm = () => {
 onConfirm();
 dialog.close();
 };
 }
}

###4. 使用弹框组件最后,我们可以在需要使用弹框的页面中导入 `Dialog` 组件并使用 `showDialog` 函数来显示弹框。
vue<template>
 <div>
 <button @click="showDialog">显示弹框</button>

 <!-- 弹框内容 -->
 <el-dialog :title="title" v-model="visible" width="30%">
 {{ content }}
 </el-dialog>
 </div>
</template>

<script lang="ts">
import { defineComponent, ref } from 'vue';
import Dialog from '@/components/Dialog.vue';
import { showDialog } from '@/utils/dialog';

export default defineComponent({
 name: 'MyPage',
 components: {
 Dialog,
 },
 setup() {
 const visible = ref(false);
 const title = ref('');
 const content = ref('');

 const showDialog = () => {
 this.title = '标题';
 this.content = '内容';
 this.visible = true;
 };

 return {
 visible,
 title,
 content,
 showDialog,
 };
 },
});
</script>

通过以上步骤,我们已经成功地使用 Vue3 + TS + ElementUI-Plus 来实现一个高级别的弹框组件。

其他信息

其他资源

Top