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

Ant-Design Table中使用 AStatisticCountdown倒计时,鼠标在表格上移动时倒计时被重置

目录

一、问题

二、原因及解决方法

三、总结


一、问题

1.在ATable的插槽中给单元格写了一个 AStatisticCountdown倒计时,但是鼠标在表格上移动倒计时就会被重置

2.代码如下:

      <template #headerCell="{ column }"><template v-if="column.key === 'promiseTime'"><AStatisticCountdown :value="getCountDown(record)" :valueStyle="{ fontSize: '14px' }" prefix="倒计时:" /></template></template>/**倒计时 */
function getCountDown(item: GetReportListResultItem) {return Date.now() + item.countDown * 1000
}

二、原因及解决方法

1.真是奇了怪,放在表格外面的渲染是正常的。

2.通过console打印发现,鼠标在表格上移动时通过#bodyCell插槽加载的内容里面的函数都会被重新执行,也就是会重新生成绘制指令。

3.Date.now()+ item.countDown * 1000表示:以Date.now()为基准倒计时 item.countDown * 1000 s。 我在getCountDown里面使用 Date.now()获取基准时间,鼠标移动触发了getCountDown函数,Date.now()每次获取到的都是新的初始时间,基准时间改变了所以倒计时也重新计时了。

4.解决办法:把Date.now()提出来,只初始化基准时间一次

        代码如下:

const now = Date.now()
/**倒计时 */
function getCountDown(item: GetReportListResultItem) {return now + item.countDown * 1000
}

三、总结

1. 对于ATable插槽中的函数,鼠标移动就会重新执行对于无需在鼠标移动时修改的值(大多数情况下)需要放在函数外面声明。例如:倒计时的初始基准时间

2. 对于ATable插槽中的函数鼠标移动就会重新执行,我觉得很不能理解。

        1)为什么不只是单纯的改样式呢,为什么要重新执行函数?表格滚动、鼠标移动经常会有呀,但是需要重新执行函数的场景在哪里呢?

        2)退一步来讲,就算有函数需要重新执行,也需要做好节流吧,感觉现在鼠标随便动一下,都执行了n次函数。

        3)如有大佬知道其中原因,希望不吝赐教,非常感谢!

/*

希望对你有帮助!

如有错误,欢迎指正,谢谢!

*/

http://www.dtcms.com/a/391203.html

相关文章:

  • Linux crontab 定时任务工具使用
  • 阿里云RDS mysql8数据本地恢复,与本地主从同步(容器中)
  • 记录一次mysql启动失败问题解决
  • LeetCode算法练习:35.搜索插入位置
  • (1) 为什么推荐tauri框架
  • 嵌入式面试高频(八)!!!C++语言(嵌入式八股文,嵌入式面经)
  • Spring AI开发指导-工具调用
  • Linux 基本命令超详细解释第二期 | touch | cat | more | cp | mv | rm | which | find
  • [x-cmd] 安装指南
  • Altium Designer(AD24)原理图Move移动功能详细介绍图文教程
  • 部署java程序,服务器报403 Forbidden 问题的终极解决方案
  • 【LeetCode】链表经典问题解析:环形、回文与相交
  • 电磁超材料及其领域应用优势
  • STM32与Modbus RTU协议实战开发指南-fc3ab6a453
  • ArrayList 与 LinkedList 深度对比:从原理到场景的全方位解析
  • Ubuntu和windows复制粘贴互通
  • 银行回单 OCR 识别:财务自动化的 “数据入口“
  • 深兰科技陈海波的AI破局之道:打造软硬一体综合竞争力|《中国经营报》专访
  • 面试经验之mysql高级问答深度解析
  • 高质量票据识别数据集:1000张收据图像+2141个商品标注,支持OCR模型训练与文档理解研究
  • 嵌入式音视频开发——FFmpeg入门
  • MySQL索引篇---B+树在索引中的工作原理
  • 强化学习训练-数据处理
  • VirtualBox为ubuntu系统设置共享文件夹
  • Python实战进阶》No.41: 使用 Streamlit 快速构建 ML 应用
  • Salesforce 执行顺序(Order of Execution)详解
  • Linux内核进程管理子系统有什么第五十七回 —— 进程主结构详解(53)
  • Vue 记账凭证模块组件
  • ORACLE-数据库闪回
  • 【Python】集合