Skip to content

通知

Notification (通知) 是用于展示系统级重要信息的反馈组件。与轻量级的 Message 不同,Notification 支持标题内容的分离展示,默认停留在屏幕右上角,并且通常不会自动关闭,直到用户确认或手动关闭。

它非常适合用于“新订单提醒”、“版本更新通知”、“任务执行结果”等需要用户明确感知的场景。

基础用法

通过 $tNotify 方法即可创建一个通知实例。

javascript
import { inject } from 'vue';

const { $tNotify } = inject('$global');

// 1. 基础通知 (仅内容)
$tNotify({ content: "您有一条新的待办事项" });

// 2. 带标题的标准通知
$tNotify({ 
  title: "系统维护", 
  content: "服务器将于今晚 00:00 进行例行维护,请提前保存数据。",
  type: "warning" 
});

进阶特性

视觉层级 (Tone)

Notification 支持 5 种视觉色调等级,配合 type 使用,可适应不同的背景复杂度或强调需求。

  • weak: 弱化背景,适合非侵入式通知。
  • base (默认): 标准强度。
  • strong: 强色调,高饱和度。
  • strongInvert: 强反色。
  • extremeInvert: 极反色,用于最高级别的视觉强调。
javascript
$tNotify({
  title: "磁盘空间告警",
  content: "剩余空间不足 5%",
  type: "danger",
  tone: "strong" // 使用强色调背景
});

手动关闭与回调

默认情况下,Notification 的 duration0(不自动关闭)。您可以通过 onClose 回调监听用户的关闭操作。

javascript
$tNotify({
  title: "文件导出",
  content: "点击关闭以清除此消息",
  onClose: () => {
    console.log("用户已阅,执行清理逻辑...");
  }
});

自动关闭

如果希望通知像 Message 一样自动消失,可以设置 duration(毫秒)。

javascript
// 15秒后自动关闭
$tNotify({
  title: "自动保存",
  content: "草稿已保存",
  duration: 15000 
});

通知分组 (Grouping)

当多个具有相同标题和内容的通知连续触发时,开启 grouping 可以将它们合并。这在处理高频系统消息(如连续报错)时非常有用。

javascript
// 连续触发时,界面只会显示一个通知框,并带有计数徽标
$tNotify({ 
  title: "连接超时", 
  content: "尝试重新连接服务器...", 
  type: "error",
  grouping: true 
});

全局方法

$tNotify(options)

创建并显示一条通知。返回一个包含 destroy() 方法的实例对象,用于手动提前关闭。

javascript
const notify = $tNotify({ title: "上传中...", content: "进度 0%", duration: 0 });

// 模拟进度更新后关闭
setTimeout(() => {
  notify.destroy();
}, 2000);

$tNotifyCloseAll()

立即关闭当前所有显示的 Notification 实例。

API 参考

属性名类型默认值说明
titleString-通知标题,字体加粗显示。
contentString(必填)通知详情内容。
typeString'info'主题色类型:primary, success, warning, danger/error, info, emphasis 等。
toneString'base'视觉色调。可选值:'weak', 'base', 'strong', 'strongInvert', 'extremeInvert'
durationNumber0显示时间 (ms)。0 表示不自动关闭。
onCloseFunction-关闭时的回调函数。
positionString'top-right'弹出位置。可选:top-right, top-left, bottom-right, bottom-left 等。
groupingBooleanfalse是否合并相同内容的通知。
showCloseBooleantrue是否显示关闭按钮。
iconString-自定义图标类名。
hideIconBooleanfalse是否隐藏图标。
transparentBooleantrue是否启用半透明背景。
backgroundBlurBooleantrue是否启用背景模糊。
hasShadowBooleantrue是否显示阴影。
shadowColorString'weak'阴影强度等级。
classNameString-自定义 CSS 类名。
appendToString/Object-指定挂载容器。

全局配置

全局配置对象 $attentionConfig响应式的。修改默认配置可立即影响后续创建的通知。

javascript
import { inject } from 'vue';

const { $attentionConfig } = inject('$global');

const changeConfig = () => {
  // 动态修改默认位置和时长
  $attentionConfig.value.notification.position = "bottom-right";
  $attentionConfig.value.notification.duration = 10000;
  $attentionConfig.value.notification.offset = 30;
};

全局 ESC 监控

为了提供高效且符合直觉的交互体验,本组件深度集成了全局 escCounter 监控。当用户按下 Esc 键时,所有当前显示的通知实例将会被自动销毁。这允许用户通过键盘快速清理屏幕上的临时信息,无需逐个手动点击关闭。