当前位置: 首页 > article >正文

Vue3封装通用确认删除按钮实战案例

初始代码

<script setup>

</script>

<template>
  <a-popconfirm
      title="您确认要删除吗?"
      ok-text="确认"
      cancel-text="取消"
      @confirm="onDelete(record.id)"
  >
    <a-button size="small" type="primary" danger>删除</a-button>
  </a-popconfirm>
</template>

要解决的问题

  • 怎么让这个onDelete方法变成通用的
  • 怎么让record.id也就是要删除的ID变成通用的

解决思路

  • defineProps 可以定义属性, 这个要删除的ID可以通过属性传过来
  • emit可以定义事件, 删除方法可以通过事件传递

定义属性

const props = defineProps({
  id: {
    type: String,
    default: ''
  }
})

定义方法

// 定义要暴露的方法
const emit = defineEmits(["delete"])

// 定义触发的方法
function onDelete() {
  // 通过emit传值
  emit("delete", props.id)
}

完整代码

<script setup>
// 定义属性
const props = defineProps({
  id: {
    type: String,
    default: ''
  }
})

// 定义要暴露的方法
const emit = defineEmits(["delete"])

// 定义触发的方法
function onDelete() {
  // 通过emit传值
  emit("delete", props.id)
}
</script>

<template>
  <a-popconfirm
      title="您确认要删除吗?"
      ok-text="确认"
      cancel-text="取消"
      @confirm="onDelete"
  >
    <a-button size="small" type="primary" danger>删除</a-button>
  </a-popconfirm>
</template>

优化代码

ID可以等到父组件监听到点击事件的时候手动传入, 而不需要通过属性传入.

<script setup>
// 定义要暴露的方法
const emit = defineEmits(["delete"])

// 定义触发的方法
function onDelete() {
  // 通过emit传值
  emit("delete")
}
</script>

<template>
  <a-popconfirm
      title="您确认要删除吗?"
      ok-text="确认"
      cancel-text="取消"
      @confirm="onDelete"
  >
    <a-button size="small" type="primary" danger>删除</a-button>
  </a-popconfirm>
</template>

http://www.kler.cn/news/330966.html

相关文章:

  • Hive数仓操作(四)
  • [ComfyUI]Flux:超美3D微观山水禅意,经典中文元素AI重现,佛陀楼阁山水画卷
  • YOLOv11改进 | 独家创新- 注意力篇 | YOLOv11结合全新多尺度线性注意力机制MLAttention(全网独家创新)
  • IPS和IDS分别适用于哪些网络环境和安全需求
  • Redis集群安装
  • C++ 内存池(Memory Pool)详解
  • Flume实战--Flume中的拦截器详解与操作
  • 卷积神经网络(Convolutional Neural Networks, CNN)
  • c++开发之编译curl(安卓版本)
  • HarmonyOs 学会查看官方文档实现菜单框
  • 高性能架构—存储高性能
  • K8S配置管理中心Configmap实现微服务配置
  • 【二十七】【QT开发应用】VS如何复制项目,QT无边窗窗口Pro版本,信号与信号槽的应用,背景图片自适应控件大小
  • 大模型笔记
  • 深度学习-19-深入理解并训练自己的Tokenizer分词器
  • Linux --入门学习笔记
  • Docker Compose 部署大模型GPU集群:高效分配与管理算力资源
  • redis从入门到精通
  • OpenCV threhold()函数
  • 鸿蒙ArkUI实战开发-主打自研语言及框架