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('删除成功!')
}
相关推荐
虞泽1 天前
鸢尾博客项目开源
java·spring boot·vue·vue3·博客
前端杂货铺2 天前
简记Vue3(三)—— ref、props、生命周期、hooks
vue.js·vue3
静谧的美3 天前
vue3-element-admin 去掉登录
vue.js·前端框架·vue3·去掉登录
朝阳393 天前
vue3【组件封装】消息提示 Toast
vue3·消息提示·组件封装
占星安啦4 天前
【electron+vue3】使用JustAuth实现第三方登录(前后端完整版)
electron·vue3·登录·justauth·第三方登录
前端烨4 天前
element-plus版本过老,自写选项弹框增删功能
前端·javascript·css·vue3·element-plus
前端杂货铺4 天前
简记 Vue3(一)—— setup、ref、reactive、toRefs、toRef
vue·vue3·简记
宁波阿成5 天前
pnpm install安装element-plus的版本跟package.json指定的版本不一样
json·pnpm·vue3·element-plus