新闻详情

新闻详情

首页 / 资讯中心 / 详情

使Popconfirm包裹的Button有loading效果

发布时间:2026/10/1 9:11:41来源:尧图网络
使Popconfirm包裹的Button有loading效果
目录Popconfirm 两种写法完整对比方式1onConfirm{this.save} 【不包箭头函数】方式2onConfirm{() this.save()} 【箭头函数包裹】核心对比表格关键避坑重点拓展思考题加深底层理解Popconfirm 两种写法完整对比目标需求点击Popconfirm组件的弹窗里的【是】外层Button展示loading核心底层常识先记住Popconfirm 原生自动loading 只控制弹窗内部的「是」按钮永远无法自动控制外层包裹的Button。外层Button loading 只能依靠 state 手动管控。方式1onConfirm{this.save} 【不包箭头函数】代码示例render() { return ( Popconfirm title是否确定保存? onConfirm{this.save} okText是 cancelText否 Button loading{this.state.saveLoading}保存/Button /Popconfirm ) } save async () { if (this.state.saveLoading) return; this.setState({ saveLoading: true }); try { await saveApi(); message.success(保存成功); } catch (err) { message.error(保存失败); } finally { this.setState({ saveLoading: false }); } };执行机制解读onConfirm{this.save}组件调用 this.save()接收函数返回的Promise✅ 弹窗内【是】按钮自动拥有loadingantd原生能力✅ 外层Button依靠我们代码里 saveLoading 手动控制loading✅ 现象弹窗的确认按钮转圈 外层保存按钮同时转圈✅ 优点同时两套loading代码简洁没有多余箭头包裹⚠️ 缺点视觉上两个地方同时转圈部分产品UI不希望出现这种效果。方式2onConfirm{() this.save()} 【箭头函数包裹】代码示例render() { return ( Popconfirm title是否确定保存? onConfirm{() this.save()} okText是 cancelText否 Button loading{this.state.saveLoading}保存/Button /Popconfirm ) } // 和上面完全一致 save async () { if (this.state.saveLoading) return; this.setState({ saveLoading: true }); try { await saveApi(); message.success(保存成功); } catch (err) { message.error(保存失败); } finally { this.setState({ saveLoading: false }); } };执行机制解读// 等价理解onConfirm () {this.save();// 没有return返回值undefined}Popconfirm 执行箭头函数拿到返回值 undefined❌ 弹窗内【是】按钮不会自动出现loading✅ 外层Button依旧依靠 saveLoading 正常展示loading✅ 现象只有外层Button转圈弹窗内部确认按钮无loading 这是你当前业务想要的效果如果想让箭头函数写法同时开启弹窗loading拓展必须手动return Promise极少场景使用onConfirm{() { return this.save(); }}核心对比表格// ✅方案A大括号不return Promise弹窗按钮不loading推荐你的业务 onConfirm{(){ this.toSubmit() }} // ❌方案B无大括号隐式return Promise弹窗内部按钮转圈双重loading onConfirm{() this.toSubmit() } // ❌方案C手动return同样弹窗按钮转圈 onConfirm{() { return this.toSubmit() }}关键避坑重点无论哪种写法外层Button loading都不能自动生效必须手动维护state finally很多人误以为不传箭头函数就能自动控制外层按钮这是重大误区。不要忘记防重复点击判断if (this.state.saveLoading) return;finally必不可少防止接口异常导致按钮永久loading最终业务推荐你的需求只想要外层按钮loading直接使用箭头函数包裹方案踩坑点async 直接写 onConfirm 上// 也会弹窗按钮loading因为async函数一定返回Promise onConfirm{async (){ await this.toSubmit() }}哪怕你写了大括号只要是 async (){}函数本身返回 PromisePopconfirm 拿到 Promise弹窗按钮开启 loading。如果你不想弹窗 loading不要把 async 写在 onConfirm 外层async 放到内部 toSubmit 函数里面。拓展思考题加深底层理解Popconfirm onConfirm {} 大括号有无loading 表现不一样完整解析//写法1带大括号 onConfirm{() { this.toSubmit(); }} //写法2不带大括号 onConfirm{() this.toSubmit()}现象写法 1{}Popconfirm 内部确认按钮不会转圈只有外部 Button 自己 loading ✅我们想要的写法 2 无{}Popconfirm 弹窗里面的确认按钮会出现 loading 转圈双重 loading不想要箭头函数规则() { 代码 }大括号代表函数体代码块不会自动 return。如果你不手动写 return函数返回undefined() expr没有大括号是隐式返回表达式结果会自动把表达式的返回值 return 出去。问如果我写成 onConfirm{()this.save()}但是save没有async/await会影响外层loading吗答不会外层loading完全由 setState 控制和是否返回Promise无关。是否返回Promise 只影响弹窗内部确认按钮loading和外层Button毫无关系。async 函数永远返回 Promise
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

RevokeMsgPatcher:PC版微信/QQ/TIM防撤回补丁的原理、操作步骤与失败排查 2026/10/1 9:55:04

RevokeMsgPatcher:PC版微信/QQ/TIM防撤回补丁的原理、操作步骤与失败排查

RevokeMsgPatcher:PC版微信/QQ/TIM防撤回补丁的原理、操作步骤与失败排查 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: …

阅读更多 →
如何用 trackerslist 安装公共 BT 追踪器列表:从拉取到生效的保姆级教程 2026/10/1 9:54:51

如何用 trackerslist 安装公共 BT 追踪器列表:从拉取到生效的保姆级教程

如何用 trackerslist 安装公共 BT 追踪器列表:从拉取到生效的保姆级教程 【免费下载链接】trackerslist Updated list of public BitTorrent trackers 项目地址: https://gitcode.com/GitHub_Trending/tr/trackerslist 种子下载慢、做种人少,多半…

阅读更多 →
第一章 自动控制系统的基本概念 2026/10/1 9:54:51

第一章 自动控制系统的基本概念

文章目录第一章 自动控制系统的基本概念第一节 自动控制系统的基本结构第二节 闭环控制系统的基本组成第三节 自动控制系统的分类第四节 对控制系统的基本要求习题一、单项选择题(10 题)二、填空题(10 空)三、判断题(1…

阅读更多 →
Elsevier图形规范:学术出版的图像技术硬门槛 2026/10/1 9:54:51

Elsevier图形规范:学术出版的图像技术硬门槛

1. 这不是“美工活”,而是学术出版的硬性技术门槛你可能刚收到一封Elsevier期刊编辑部的邮件,标题写着“Artwork Requirements Not Met”,附件里是一张被退回的Figure 3——图注字体是10号,而他们要求最小12号;图中曲线…

阅读更多 →
YOLOv13改进策略【卷积层篇】| 2023 EMO 高效移动端算子,把 ViT 精度塞进手机延迟 2026/10/1 9:54:44

YOLOv13改进策略【卷积层篇】| 2023 EMO 高效移动端算子,把 ViT 精度塞进手机延迟

本文基于 YOLOv13 官方仓库(iMoonLab/yolov13,ultralytics 8.3.63 fork) 实测整理,Windows/CPU 全程可跑。EMO(Wang et al., AAAI 2024《EMO: Rethinking Mobile Block for Efficient Attention Models》,官方源码 github.com/zhangzjn/EMO)为移动端重造了倒残差块:iRM…

阅读更多 →
时序扩散模型中噪声调度器的默认陷阱与定制实践 2026/10/1 9:54:44

时序扩散模型中噪声调度器的默认陷阱与定制实践

1. 这个标题不是在卖关子,而是直指时序扩散模型落地时最常被忽略的“默认陷阱”你有没有试过,在KDD这类顶会论文里看到一个标题,第一反应是:“这说的啥?‘无中生有’还能当技术点?”——别急,这…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉