MENU

[泛微 Ecology10] 自定义一个可控的 Loading Message

• 2025 年 12 月 11 日 • 阅读: 37 • OA

Ecology E9 时代,antd.message.loading 是很多前端人的心头好——轻量、可控、非遮罩式、还能手动关闭。
但到了 Ecology 10 ,UI 层全面转向 weappUi,只保留了 Spin全局遮罩样式。
结果就是:异步任务的 Loading 不够友好,也缺乏 message 级别的可控 loading 提示。
丸子用最简单的方式,实现了一个「伪 message.loading」效果:

轻量、可关闭、不干扰页面交互。

效果展示:

20251211130731_rec_.gif


方案:自己封装一个 message-like Loading

核心思路:
利用 weappUi.Dialog.message + weappUi.Spin 拼一个轻量提示,再返回可销毁实例。
代码极简两行:

window.showLoading = () =>
  weappUi.Dialog.message({
    type: 'custom',
    delay: 0,
    icon: React.createElement(weappUi.Spin, {
      spinning: true,
      size: 'small'
    }),
    content: '加载中...'
  });

window.hideLoading = (inst) => inst?.destroy();

使用方式也与 antd 非常相似:

const loadingInst = window.showLoading();

// 模拟异步任务
setTimeout(() => {
  window.hideLoading(loadingInst);
}, 1500);

Minimal. Elegant. 有手就行。


为什么不用全局遮罩?

原因很现实:Ecology10 的全局遮罩太“重”了

  • 遮住整个屏幕 → 用户无法操作
  • 对轻任务(接口查询、短轮询)不友好
  • 经常误导用户以为系统卡死
  • 影响复杂页面的交互体验

很多时候,我们只是想来个“轻提示”,而不是把世界暂停。


自定义 Loading 的优点

不阻断用户操作,比全屏 Spin 更自然。
返回实例 → 我们想关就关,不用等待延时关闭。
照样用 weappUi 的风格,不突兀。
只两行代码,随处可复用。

写在最后

Ecology10 虽然去掉了很多 E9 时代顺手的 Web 组件,但也给了前端更多自由度。

轻量级 Loading 只是其中一个小例子。

如果你也在 E10 做前端扩展,欢迎来丸子的博客看看