Ant Design Vue 使用 Modal.confirm() 方式点击确认或取消无法关闭

目录

  • [1. 问题复现 & 原因](#1. 问题复现 & 原因)
  • [2. 解决方案](#2. 解决方案)
  • 3.依赖包版本符号说明
    • [3.1 版本符号 ^](#3.1 版本符号 ^)
    • [3.2 版本符号 ~](#3.2 版本符号 ~)

1. 问题复现 & 原因

如果是通过下面的静态方法打开的话会出现这样的问题:

js 复制代码
// 有问题的代码
Modal.confirm({
	title: '提示',
	content: '操作未保存,是否保存',
	onOk () {
	 // ....
	},
	onCancel () {
	 // ....
	}
})

不是通过静态方法(JS编码)打开的的方式是没有问题的:

html 复制代码
<!--可以正常使用的代码-->
 <a-modal v-model:visible="visible" title="Basic Modal" @ok="handleOk">
     <p>Some contents...</p>
     <p>Some contents...</p>
     <p>Some contents...</p>
</a-modal>

【原因】 问题的原因是一个小小的 bug,可以参考 Github 上的 Issue: https://github.com/vueComponent/ant-design-vue/issues/7257

2. 解决方案

其实不光 vue 3.4.x 版本会出问题;使用 ant-design-vu 3.2.20 + vue 3.2.0 也会出现该问题。

解决方法 :按照 Issue 中的方案,将 vue 的版本固定为 3.3.x 即可:

json 复制代码
// 出现问题的依赖
"dependencies": {
	"ant-design-vue": "^3.2.20",
	"vue": "^3.2.0",
}
json 复制代码
// 可以正常使用使用的依赖
"dependencies": {
	"ant-design-vue": "^3.2.20",
	"vue": "~3.3.13",
}

3.依赖包版本符号说明

后续会单独出一篇文章来详细说明 package.json 中依赖的版本关系,这里只针对上面解决方案中用到的 ^~ 简单说明一下。

版本号定义:x.x.x

x x x
英文 Major Version Minor Version Patch Version
中文 主版本号 次版本号 修订(补丁)版本号
举例 3 2 20

3.1 版本符号 ^

^(Caret):代表"向后兼容的更新";会匹配同一主版本号的最新版本。

💪 规则:

  • 对于 1.0.0 及以上版本:更新小版本(Minor)和补丁版本(Patch)。
  • 对于 0.x.x 版本:比较特殊,只更新补丁版本。

💪 示例:

  • "^1.2.3" 会匹配 1.x.x 中最新的 1.2.3 及以上版本(例如,1.2.4、1.3.0),但不会匹配 2.0.0。
  • "^0.2.3" 会匹配 0.2.x 中的最新版本,但不会匹配 0.3.0。

3.2 版本符号 ~

~ (Tilde) :代表"最小改动";只会匹配指定的次版本号(Minor)和补丁版本的更新。

💪 示例:

  • "~1.2.3" 会匹配 1.2.x 中最新的版本(例如,1.2.4),但不会匹配 1.3.0。
  • "~0.2.3" 会匹配 0.2.x 中的最新版本(例如,0.2.4),但不会匹配 0.3.0。
相关推荐
Thanks_ks16 小时前
从零手写一个 Promise:深入理解 JavaScript 异步编程的本质
javascript·promise·事件循环·异步编程·手写源码·前端进阶·promises/a+
胡萝卜术1 天前
力扣5. 最长回文子串
前端·javascript·面试
触底反弹1 天前
🔥 从零搭建 RAG 知识库:爬虫→分词→向量化→检索,一步都不能错
javascript·人工智能·面试
এ慕ོ冬℘゜1 天前
JavaScript 数组核心方法实战|新增元素 + 数组转字符串 零基础详解
开发语言·javascript·ecmascript
腻害兔1 天前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 框架层:15 个 Starter 到底在干什么?
前端·vue.js·产品经理·ai编程
梦想的旅途21 天前
JavaScript 实现企业微信消息自动发送的技术实践
运维·javascript·自动化·企业微信
就叫飞六吧1 天前
子页面和dialog案例
开发语言·javascript·ecmascript
小月土星1 天前
(实战篇)RAG-demo 深度解析:162行代码中的检索增强生成全景 (含Top-k法)
javascript·数据库·llm
lvchaoq1 天前
this指向面试代码输出题目合集
javascript·面试·职场和发展