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('删除成功!')
}
相关推荐
凯小默5 小时前
14-用户数据存储到vuex
vue3·vuex4
凯小默12 小时前
23-完成登录页面跳转加载路由规则
vue3
凯小默1 天前
vue3.x 里面使用 vuex4.x 无法找到模块“vuex”的声明文件
vue3·vuex4
克喵的水银蛇3 天前
Flutter 通用下拉刷新上拉加载列表:PullRefreshList
flutter·下拉刷新·组件封装·上拉加载
凯小默3 天前
19-项目路由规则介绍
vue3
鹤归时起雾.3 天前
Vue3响应式编程核心指南
开发语言·vue3
Beginner x_u4 天前
Vue3 + TS + TailwindCSS 操作引导组件开发逐行解析
typescript·vue3·前端开发·tailwindcss·组件开发
凯小默4 天前
17-使用前置导航守卫判断用户登录后刷新情况
vue3
凯小默4 天前
18-通过actions方法封装请求以及补充计算属性
vue3
凯小默5 天前
13-实现首页的基础结构
vue3