当前位置: 首页 > 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();
}

相关文章:

  • Linux文件的一般权限
  • 在Spark集群中搭建Standalone
  • 2025“钉耙编程”中国大学生算法设计春季联赛(8)10031007
  • 嵌入式开发学习日志Day11
  • 【403 Error】Atcoder Beginner Contest 403 题解
  • Redo log,Undo log和binlog
  • 系统思考提升培训效能
  • 培养一个输出型的爱好
  • 【Git】项目多个分支开发、维护与优化处理 ing
  • miniconda在ARM64位芯片上面的安装
  • Windows应用-屏幕截图
  • 解决 shadui组件库Popover 点击后会消失
  • 【蓝桥杯省赛真题58】Scratch画台扇 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解
  • 人工智能与机器学习:Python从零实现K-Means 算法
  • frp内网穿透的基础使用
  • 疫苗接种体系进入“全生命周期”时代:公共卫生治理再提速
  • Lustre/Scade 语言时序算子与形式化验证的联系
  • 多元函数微分之传统方法和全微分法
  • 电子监管码预检剔除装置提示盒尺寸过短
  • php 需要学会哪些技术栈,掌握哪些框架
  • 发挥全国劳模示范引领作用,加速汽车产业电智化转型
  • 西班牙遭遇史上最严重停电,已进入国家紧急状态
  • 上海质子重离子医院已收治8000例患者,基本覆盖国内常见恶性肿瘤
  • 伊朗最大港口爆炸:26公里外都能听到,超七百人受伤,原因指向化学品储存
  • “世纪火种”嘉年华启动,69家单位加入阅读“朋友圈”
  • 重新认识中国女性|婚姻,自古以来就是一桩生意