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 来实现一个高级别的弹框组件。

