vue3【组件封装】确认对话框 Modal

src/components/Modal.vue

html 复制代码
<template>
  <transition name="fade">
    <div
      class="fixed w-full h-full z-100 top-0 left-0 bg-black bg-opacity-30 flex transition-all"
      v-if="show"
    >
      <div class="w-80 m-auto bg-white border shadow-lg rounded-2 px-4 py-6">
        <slot></slot>
        <div class="flex justify-end pt-4">
          <div class="btn-plain px-6 mr-4" @click="show = false">取消</div>
          <div
            class="btn px-6"
            @click="
              () => {
                show = false
                $emit('confirm')
              }
            "
          >
            确定
          </div>
        </div>
      </div>
    </div>
  </transition>
</template>

<script setup lang="ts">
defineEmits(['confirm'])
const show = defineModel({ default: false })
</script>

使用

html 复制代码
  <button @click="show_confirmWin = true">删除</button>

  <teleport to="body">
    <Modal v-model="show_confirmWin" @confirm="del"> 确定删除吗? </Modal>
  </teleport>
ts 复制代码
const show_confirmWin = ref(false)
const del = () => {
  alert('删除成功!')
}
相关推荐
上官熊猫6 小时前
nuxt3项目打包部署到服务器后配置端口号和开启https
前端·vue3·nuxt3
璇璇吴16 小时前
vue3 el-form表格滚动
javascript·vue3·elementplus
放逐者-保持本心,方可放逐8 天前
vue2 升级为 vue3+第三方库升级+vue2与vue3混合交互
vue3·vue2·交互·项目升级·第三方库升级
花铛11 天前
《Vue3 八》<script setup> 语法
vue3
想要打 Acm 的小周同学呀11 天前
若依框架--数据字典设计使用和前后端代码分析
java·vue3·数据字典·若依
飞雪金灵13 天前
Vue3(elementPlus) el-table替换/隐藏行箭头,点击整行展开
前端·vue3·element-plus·隐藏table箭头·替换table展开箭头·点击整行展开
xiangxiongfly91514 天前
Vue3 自定义插件(plugin)
vue3·插件·plugin
猫猫村晨总15 天前
前端图像处理实战: 基于Web Worker和SIMD优化实现图像转灰度功能
前端·图像处理·vue3·canvas·web worker
theMuseCatcher16 天前
Vue Amazing UI 组件库(Vue3+TypeScript+Vite 等最新技术栈开发)
ui·typescript·vue3·vite·components
花铛16 天前
《Vue3 六》插槽 Slot
vue3