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

el-dialog弹窗关闭时调了两次刷新数据的接口

 一、场景:

弹窗是父组件通过dialog调用子组件的方式,然后在弹窗里面修改完内容,点击关闭按钮时,需要刷新父组件列表数据。但是调了两次刷新列表的接口。

父组件:

<!-- 新增/编辑数据弹窗 --><el-dialog style="width: auto;" v-model="dataSourceVisible" :title="$t(isEdit ? 'dataSource.editDataSource' : 'dataSource.addDataSource')" @close="handleClose" destroy-on-close><component :is="DataSource" :OBJECT_GUID="OBJECT_GUID" :PARENT_PATH="PARENT_PATH" @close="handleClose" :showPerformance="showPerformanceList" @refreshDataList="refreshDataList" /></el-dialog>
// 关闭新增/编辑数据源弹窗
const handleClose = () => {OBJECT_GUID.value = '';showPerformanceList.value = false;dataSourceVisible.value = false;requestDataSource();
}

 

二、解决方法:

防抖函数:

// 关闭新增/编辑数据源弹窗
const handleClose = () => {OBJECT_GUID.value = '';showPerformanceList.value = false;dataSourceVisible.value = false;debounceRequestDataSource();
}
// 防抖函数
let requestTimeout = null;
const debounceRequestDataSource = () => {if (requestTimeout) {clearTimeout(requestTimeout);}requestTimeout = setTimeout(() => {requestDataSource();}, 300);
};
const refreshDataList = () => {requestDataSource();
}

通过函数防抖就能防止关闭弹窗时调取两次刷新数据的接口。

三、优化拓展:

 建议关闭的时候不要调取刷新数据的接口,因为如果在弹窗里面啥操作都不做,关闭时还刷新数据就不太友好。建议在保存或者提交的时候刷新数据。

子组件:

const emit = defineEmits(["back", "close", "refreshDataList"]);

保存/提交时:

function dataSubmit(name, isPublish) {proxy.$refs[name].validate(async (valid) => {if (!valid) {return false;}// 提交try {......     const data = await handleSubmitRequest(...);emit("refreshDataList");...} catch (e) {console.log("submit error", e);} finally {...}});
}

父组件:

<!-- 新增/编辑数据弹窗 --><el-dialog style="width: auto;" v-model="dataSourceVisible" :title="$t(isEdit ? 'dataSource.editDataSource' : 'dataSource.addDataSource')" @close="handleClose" destroy-on-close><component :is="DataSource" :OBJECT_GUID="OBJECT_GUID" :PARENT_PATH="PARENT_PATH" @close="handleClose" :showPerformance="showPerformanceList" @refreshDataList="refreshDataList" /></el-dialog>

子组件通知父组件刷新数据 

const refreshDataList = () => {requestDataSource();
}
http://www.xdnf.cn/news/203149.html

相关文章:

  • KBEngine 源代码分析(二):协议注册和处理
  • Vue 生命周期钩子总结
  • 【前缀和 差分数组 数论】P6042 「ACOI2020」学园祭|省选-
  • 【DeepSeek认证】最好的MODBUS调试工具
  • 什么是数据链路层的CRC检测以及为什么要放到帧尾?
  • 民办生从零学C的第十二天:指针(1)
  • 探秘Transformer系列之(31)--- Medusa
  • MySQL的数据类型
  • 从灰色地带走向阳光监管的漏洞产业
  • 运维实施27-Linux权限管理
  • 有源医疗器械的安规三项
  • 2025“钉耙编程”中国大学生算法设计春季联赛(8)10031007
  • sql学习笔记(四)
  • Java方法执行机制与入口点实现深度解析
  • 跨平台数据采集方案:淘宝 API 对接 React Native 实现移动端实时监控
  • docker镜像构建常用参数
  • [计算机科学#4]:二进制如何塑造数字世界(0和1的力量)
  • Linux虚拟机无法重启网络
  • 4G FS800DTU上传图像至巴法云
  • DDD是什么?电商系统举例
  • 今日行情明日机会——20250428
  • NdrpGetAllocateAllNodesContext函数分析之三个内存区域的联系
  • 每日一题(12)TSP问题的贪心法求解
  • params query传参差异解析及openinstall跨平台应用
  • EMC isilon/PowerScale 如何收集日志
  • 【SAP ABAP 获取采购申请首次审批时间】
  • 【LLM开发】Unigram算法
  • 可编程控制器应用
  • 瞄定「舱驾融合」,黑芝麻智能的智驾平权「芯」路径
  • 大数据应用开发与实战(1)