一、使用方便,可分发内容
1.绑定visible属性后,弹窗可自我关闭
(1)通过v-model:visible给弹框组件绑定属性
(2)组件内创建一个变量,用于弹框显示。初始值为父组件传递的prop中的visible。
(3)监听prop 的visible,改变dialogVisible的值。
(4)监听dialogVisible,触发update:visible事件,传递dialogVisible的值
2.提供默认和底部插槽,用于渲染其他视图
(1)提供默认插槽,显示内容
(2)提供footer插槽,显示底部操作区域
<el-dialog v-bind="$attrs" v-model="dialogVisible"> <slot></slot> <template #footer> <slot name="footer"></slot> </template> </el-dialog>
watch( () => props.visible, () => { dialogVisible.value = props.visible; });const emits = defineEmits(["update:visible"]);watch(dialogVisible, (val) => { emits("update:visible", val);});