返回列表 发布新帖

[心得分享] 使用Hooks实现按钮或页面Loading效果

33 0
发表于 2025-4-25 15:23:28 | 查看全部 阅读模式
场景:当在基础资料作业或任务卡等页面上,点击按钮执行调用API或其他类似操作时,
希望在执行过程中在页面呈现loading效果,让用户知道后台正在执行中需要等待。

效果1:按钮呈现loading效果
2025-04-25 14 03 48.png
在按钮的hooks中用 component.loading = true 来让按钮呈现loading效果
component.loading = false 来解除按钮loading效果
以下是一个调用ESP API时加上按钮loading效果的hooks示例:
  1. //将按钮设为loading状态
  2. component.loading = true;
  3. console.log(component.loading);

  4. //调用ESP API
  5. options.utils.espApi
  6.     .getEspByActionId({
  7.         actionId: 'esp_isv.pdemo.sample.personnel.report.get',
  8.         parameter:{"employee_info":[{"employee_no":"0001"}]}
  9.     })
  10.     .subscribe(
  11.         (res) => {
  12.             console.log(res.data);
  13.             //执行结束后解除按钮loading状态
  14.             component.loading = false;
  15.             console.log(component.loading);
  16.         },
  17.         (err) => {
  18.             console.log(err.error.betterErrorMessage);
  19.             //执行结束后解除按钮loading状态
  20.             component.loading = false;
  21.             console.log(component.loading);
  22.         }
  23.     );
复制代码

效果2:整体页面(表格)呈现loading效果,并遮罩页面
2025-04-25 14 36 43.png
此效果必须页面上有表格组件才能使用
需要先获取表格组件的ID,然后在按钮的hooks中用 component.getComponentById('...') 来获取表格组件,
假设获取的表格组件为 tableComponent,再用 tableComponent.setLoading(true) 来加上loading效果,
tableComponent.setLoading(false) 解除loading效果
以下是一个点击按钮后呈现5秒loading效果的hooks示例:
  1. //获取表格组件
  2. let tableComponent = component.getComponentById("9528ff20-f56d-25b9-fba4-b204c93cede1");
  3. if (tableComponent) {
  4.   //将表格设为loading状态
  5.   tableComponent.setLoading(true);
  6.   tableComponent.markForCheck();
  7.   setTimeout(() => {
  8.     //取消表格loading状态
  9.     tableComponent.setLoading(false);
  10.     tableComponent.markForCheck();
  11.   }, 5000)
  12. } else {
  13.   console.log('获取表格组件异常......');
  14. }
复制代码
表格ID可以在这取得
2025-04-25 14 43 52.png

热门讨论
精选文章
Athena平台-任务到期催办功能(逾期提醒)
  需求背景:           对于任务卡发卡后任务在
前端定制基于postmessage通讯机制使用说明
 业务场景:       在前端定制开发场景中需要实现不同任务
DAP后端应用写法-使用DWDataSet进行数据库的新增/修改
场景使用高代码后端要去数据库变更数据, 除了直接下SQL的方式外, 更可用java物件的方
DAP后端应用写法-使用DWQueryInfo进行数据库的查询
场景使用高代码后端要去数据库查资料, 除了直接下SQL的方式外, 更可用java物件的方式,
排錯技巧 - 雅典娜签核,间歇性会报错
 问题描述顾问反馈:雅典娜签核套件点击OA送签或查看签核流程时,间歇性会报错。
  • 关注公众号
Copyright © 2026 鼎捷数智股份有限公司 版权所有 All Rights Reserved. Powered by Discuz! X5.0
关灯 在本版发帖
即将开放
返回顶部
快速回复 返回顶部 返回列表