请用Vue3实现封装el-dialog的完整例子
时间: 2023-04-09 07:02:28 浏览: 206
Vue中封装input组件的实例详解
好的,我可以回答这个问题。以下是使用Vue3封装el-dialog的完整例子:
```html
<template>
<div>
<button @click="showDialog">打开对话框</button>
<el-dialog :visible.sync="dialogVisible" :title="title" :width="width" :before-close="beforeClose">
<slot></slot>
</el-dialog>
</div>
</template>
<script>
import { defineComponent, ref } from 'vue';
export default defineComponent({
name: 'MyDialog',
props: {
title: {
type: String,
default: '对话框标题',
},
width: {
type: String,
default: '50%',
},
},
emits: ['close'],
setup(props, { emit }) {
const dialogVisible = ref(false);
const showDialog = () => {
dialogVisible.value = true;
};
const beforeClose = (done) => {
if (confirm('确定要关闭对话框吗?')) {
done();
}
};
const handleClose = () => {
dialogVisible.value = false;
emit('close');
};
return {
dialogVisible,
showDialog,
beforeClose,
handleClose,
};
},
});
</script>
```
使用方法:
```html
<template>
<div>
<my-dialog :title="'自定义标题'" :width="'60%'" @close="handleClose">
<p>这是对话框内容</p>
</my-dialog>
</div>
</template>
<script>
import MyDialog from './MyDialog.vue';
export default {
components: {
MyDialog,
},
methods: {
handleClose() {
console.log('对话框已关闭');
},
},
};
</script>
```
请注意,这只是一个简单的例子,你可以根据自己的需求进行修改和扩展。
阅读全文