封装confirm(Vue3+Ts)

文章目录

  • 思路
  • createApp
  • 封装confirm
  • 下周计划

思路

封装confirm首先要在以前js封装confirm的基础上进行操作 之前封装confirm的时候 是通过调用自己写的confirm函数实现弹窗的出现以及消失并进行逻辑的 那么在Vue3中怎么实现呢?
首先要进行调用函数进行传参的操作,而且组件还要接收,那怎么才能只在调用函数的情况,没有父组件子组件这种关系进行支撑的情况下对一个组件进行传参?
这里要用到createApp了 我在网上查的时候查到的基本上都是这种方法,当时还在疑惑createApp怎么还会进行传参 组件竟然还能接收,搜索之后才发现,还真能这样

附上一个大佬的掘金文章:一文带你学明白createApp创建Vue3应用对象

createApp

这里就简单的说一下createApp怎么用的 具体还是看我附上的那篇文章吧

有的人会觉得一个单文件应用只能有一个createApp 实际上并不是,一个单文件应用是可以使用多个createApp的

function createApp(rootComponent: Component, rootProps?: object): App

通过类型可以看到createApp接收两个参数
1.第一个参数为根组件对象(可以是.vue单文件组件也可以是组件对象)必传参数
2.第二个参数为传递给根组件的props 第二个参数是可选参数

附上一小段源码:在这里插入图片描述
从上面可以看到createApp的第二个参数是props,当挂载时可以直接给组件传递参数 组件用defineProps接收就行

封装confirm

组件文件

<script setup lang="ts">
import {AlertDialog,AlertDialogAction,AlertDialogCancel,AlertDialogContent,AlertDialogDescription,AlertDialogFooter,AlertDialogHeader,AlertDialogTitle,AlertDialogTrigger,
} from "@/components/ui/alert-dialog";
import { Icon } from "@iconify/vue";
import { ref } from "vue";const props = defineProps<{title?: string | undefined;content?: string | undefined;description?: string | undefined;confirmText?: string | undefined;cancelText?: string | undefined;onConfirm: Function;onCancel: Function;
}>();
const dialogVisible = ref(true);
</script><template><AlertDialog :open="dialogVisible"><AlertDialogTrigger as-child> </AlertDialogTrigger><AlertDialogContent><AlertDialogHeader><AlertDialogTitle>{{ title ? title : "提示" }}</AlertDialogTitle><AlertDialogDescription class="info flex"><Icon icon="pajamas:status-alert" /><span id="content">{{content ? content : "你确定执行该操作吗?"}}</span><span id="description">{{ description ? `(${description})` : "" }}</span></AlertDialogDescription></AlertDialogHeader><AlertDialogFooter><AlertDialogCancel @click="onCancel()">{{cancelText ? cancelText : "取消"}}</AlertDialogCancel><AlertDialogAction @click="onConfirm()">{{confirmText ? confirmText : "确定"}}</AlertDialogAction></AlertDialogFooter></AlertDialogContent></AlertDialog>
</template>
<style lang="scss" scoped>
.info {font-size: 16px;align-items: center;svg {color: #f1b357;font-size: 22px;margin-right: 10px;}#description {font-size: 14px;}
}
</style>

在代码中可以看到用defineProps 接收参数

函数useConfirm组件

import Confirm from "@/components/confirm/Confirm.vue";
import { createApp } from "vue";
export function showConfirm({title = "",content = "",description = "",confirmBtnTxt = "确定",cancelBtnTxt = "取消",
}) {return new Promise((resolve, reject) => {const app = createApp(Confirm, {title,content,description,confirmBtnTxt,cancelBtnTxt,onConfirm: () => {unmount();resolve(true);},onCancel: () => {unmount();reject(false);},});// 创建一个挂载容器const parentNode = document.createElement("div");document.body.appendChild(parentNode);// 卸载组件const unmount = () => {app.unmount();document.body.removeChild(parentNode);};// 挂载组件app.mount(parentNode);});
}

通过showConfirm函数 传递过来参数,在调用时通过createApp挂载组件,并传递过去参数,组件进行接收和渲染,当点击确定和取消时卸载该组件,.then 和.catch执行相关确定取消的逻辑

用法
在这里插入图片描述

附上效果
在这里插入图片描述

下周计划

该期末考试了,也该复习复习知识点了不然包挂科的,然后下周还有一次面试,Vue也该复习复习了,虽然写过一个项目了,但是感觉对Vue的一些用法还是不太熟悉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/490268.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玉米叶病预测数据集,使用yolo,coco,voc格式人工标注,准确率可达95.7%以上, 10884张图片,可识别叶枯病,普通锈病,灰叶斑病,健康的玉米叶

玉米叶病预测数据集&#xff0c;使用yolo&#xff0c;coco&#xff0c;voc格式人工标注&#xff0c;准确率可达95.7&#xff05;以上&#xff0c; 10884张图片&#xff0c;可识别叶枯病,普通锈病&#xff0c;灰叶斑病&#xff0c;健康的玉米叶 普通锈病 灰叶斑病 健康的 叶枯病…

深入理解C++优先级队列:原理解析与代码实战

C嘎嘎探索篇&#xff1a;优先级队列&#xff1a;在数据之舞中揭开算法的艺术面纱 前言&#xff1a; 小编在前几日刚刚完成了栈和队列相关内容的书写&#xff0c;今天小编在讲一种特殊的队列&#xff0c;它的名字叫做优先级队列&#xff0c;细心的读者朋友可能会发现在queue这…

SpringBoot:快速构建微服务应用

一、SpringBoot简介 什么是SpringBoot 是由Pivotal团队提供的快速开发框架。它基于Spring框架&#xff0c;可以用于快速构建微服务应用程序。SpringBoot提供了一种快速、便捷的方式来启动和配置一个基于Spring的应用程序&#xff0c;它封装了很多常用的配置&#xff0c;简化了开…

轻量级日志管理平台:Grafana Loki搭建及应用(详细篇)

前言 Grafana Loki是Grafana Lab团队提供的一个水平可扩展、高可用性、多租户的日志聚合系统&#xff0c;与其他日志系统不同的是&#xff0c;Loki最初设计的理念是为了为日志建立标签索引&#xff0c;而非将原日志内容进行索引。 现在目前成熟的方案基本上都是&#xff1a;L…

ansible自动化运维(四)jinjia2模板

Jinjia2模板 前面说到playbook组成的时候&#xff0c;有介绍到template模块&#xff0c;而template模块对模板文件进行渲染时&#xff0c;使用的就是jinja2模板引擎&#xff0c;jinja2本身就是基于python的模板引擎&#xff0c;所以下面先来了解一下jinjia2模板的一些用法 基…

光谱相机

光谱相机是一种能够同时获取目标物体的空间图像信息和光谱信息的成像设备。 1、工作原理 光谱相机通过光学系统将目标物体的光聚焦到探测器上&#xff0c;在探测器前设置分光元件&#xff0c;如光栅、棱镜或滤光片等&#xff0c;将光按不同波长分解成多个光谱通道&#xff0c…

LLM 分布式训练六大关键技术介绍

编者按&#xff1a; 本文聚焦于分布式去中心化神经网络训练技术&#xff0c;作者系统阐述了在大规模模型训练中提高硬件使用效率的创新方法。 文章重点阐述了六种关键的分布式训练技术&#xff1a; 数据并行训练&#xff1a;通过将数据 mini-batches 分散到多个 workers&#x…

【记录】Django解决与VUE跨域问题

1 梗概 这里记录Django与VUE的跨域问题解决方法&#xff0c;主要修改内容是在 Django 中。当然其他的前端项目 Django 也可以这样处理。 2 安装辅助包 pip install django-cors-headers3 配置 settings.py INSTALLED_APPS [ # ... corsheaders, # ... ] 为了响应…

跨平台开发技术的探索:从 JavaScript 到 Flutter

随着多平台支持和用户体验一致性在应用程序开发中变得越来越重要,开发者面临的挑战是如何在不同平台上保持代码的可维护性和高效性。本文将探讨如何利用现代技术栈,包括 Flutter、JavaScript、HTML5、WebAssembly、TypeScript 和 Svelte,在统一的平台上进行高效的跨平台开发…

队列+宽搜_429. N 叉树的层序遍历_二叉树最大宽度

429. N 叉树的层序遍历 定义一个队列q&#xff0c;将一层的节点入队&#xff0c;并记录节点个数。根据节点的个数&#xff0c;出队列&#xff0c;并将其孩子入队列。出完队列&#xff0c;队列当前剩余节点的个数就是下次出队列的次数。直到队列为空 /* // Definition for a Nod…

语音芯片赋能可穿戴设备:开启个性化音频新体验

在科技日新月异的今天&#xff0c;语音芯片与可穿戴设备的携手合作&#xff0c;正引领我们步入一个前所未有的个性化音频时代。这一创新融合&#xff0c;用户可以享受到更加个性化、沉浸式的音频体验。下面将详细介绍语音芯片与可穿戴设备合作的优点和具体应用。 1. 定制化音效…

单片机学习笔记 18. IIC总线EEPROM(理论)

更多单片机学习笔记&#xff1a;单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…

【机器学习】手写数字识别的最优解:CNN+Softmax、Sigmoid与SVM的对比实战

一、基于CNNSoftmax函数进行分类 1数据集准备 2模型设计 3模型训练 4模型评估 5结果分析 二、 基于CNNsigmoid函数进行分类 1数据集准备 2模型设计 3模型训练 4模型评估 5结果分析 三、 基于CNNSVM进行分类 1数据集准备 2模型设计 3模型训练 4模型评估 5结果分…

TOSUN同星TsMaster使用入门——2、使用TS发送报文,使用graphics分析数据等

在第一章里面已经介绍了关于同星工程的创建和最基础的总线分析&#xff0c;接下来看看怎么使用TS发送报文以及图形化分析数据。 目录 一、使用Graphics分析报文信号/变量&#xff08;对标CANoe Graphics&#xff09; 二、使用数值窗口统计信号值/变量 三、使用TS发送报文 3…

【老白学 Java】日期 / 时间格式化

日期 / 时间格式化 文章来源&#xff1a;《Head First Java》修炼感悟。 本篇文章&#xff0c;老白把日期和时间的格式化参数进行了整理&#xff0c;方便以后查阅&#xff0c;更加详细的说明请参考 Java API 文档。 一、语法解释 %&#xff0c;必要参数&#xff0c;用于引用参…

分布式 Paxos算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & Paxos算法 & 总结》《分布式 & Paxos算法 & 问题》 参考文献 《图解超难理解的 Paxos 算法&#xff08;含伪代码&#xff09;》《【超详细】分布式一致性协议 - Paxos》 Basic-Paxos 基础帕克索斯算法…

【嵌入式软件】跑开发板的前置服务配置

在嵌入式开发中,通常需要在 开发板和主机之间共享、传输和挂载文件。 这篇文章是关于如何在 Ubuntu 中配置 Samba、TFTP 和 NFS 协议的详细步骤。这些协议分别用于远程文件共享、文件传输和内核挂载文件系统。 如何安装协议: 参考:ubuntu18配置:详细的内容我手写了一份文档。…

IntelliJ IDEA 使用技巧与插件推荐

目录 常用使用技巧 1. 使用快捷键提升开发效率 2. 多光标编辑 3. 代码自动补全 4. 使用 Find Action 快速执行操作 5. 集成版本控制系统&#xff08;VCS&#xff09; 6. 快速查看代码文档 推荐插件 1. Lombok Plugin 2. Rainbow Brackets 3. Key Promoter X 4. Chec…

如何对小型固定翼无人机进行最优的路径跟随控制?

控制架构 文章继续采用的是 ULTRA-Extra无人机&#xff0c;相关参数如下&#xff1a; 这里用于guidance law的无人机运动学模型为&#xff1a; { x ˙ p V a cos ⁡ γ cos ⁡ χ V w cos ⁡ γ w cos ⁡ χ w y ˙ p V a cos ⁡ γ sin ⁡ χ V w cos ⁡ γ w sin ⁡ χ…

VR虚拟展厅的实时互动是如何实现的?

VR虚拟展厅的实时互动是通过一系列技术和流程实现的&#xff0c;这些技术和流程共同确保了用户在虚拟环境中的互动体验能够及时响应和更新。 接下来&#xff0c;由专业从事VR虚拟展厅制作的圆桌3D云展厅平台为大家介绍一下实现VR虚拟展厅实时互动的几个关键要素&#xff1a; 高…