返回知识库

界面与交互 · 反馈与临时层

轻提示Toast

短暂出现、反馈非阻塞操作结果的轻量通知:成功自动消失,失败留住直到用户处理,关键信息同时在页面留底。

保存学习进度:成功与失败的寿命不同

亲手点「保存学习进度」,切在线 / 离线,看成功提示 3 秒倒计时自动消失、失败提示留住带重试;连点触发堆叠上限,关闭或重试单条,观察工作区「上次保存」始终留底。

第 0 步:这是课程学习页,点「保存学习进度」(主操作)会触发轻提示。切「在线 / 离线」决定结果是成功还是失败——成功提示 3 秒倒计时自动消失,失败提示留住带重试;堆叠最多 3 条,超出淘汰最旧;工作区「上次保存」始终留底,关键信息不只放在会消失的提示里。

课程React 基础 · 第 3 章
上次保存 暂未保存
网络
屏幕右上角 · 轻提示堆叠0/3
暂无轻提示

对照:屏幕右上角还没有轻提示。原因:Toast 只在操作完成后出现,平时不占位,主任务可继续。下一步:保持「在线」点「保存学习进度」看成功提示 3 秒倒计时自动消失;切「离线」再点看失败提示留住待处理。

面板教会的知识点

把刚才操作里看到的现象命名为六条规则。

  • 非阻塞:轻提示出现时,工作区的「保存学习进度」仍能连点——它不挡主任务,也不要求用户立刻处理。
  • 成功自动消失:成功提示带 3 秒倒计时条,到时从堆叠自动移除;成功是「已完成的确认」,不需要用户操作。
  • 失败留住待处理:失败提示没有倒计时,留住直到重试或关闭——自动消失会让用户错过重试,造成「以为存了其实没存」。
  • 堆叠有上限:最多 3 条,超出时淘汰最旧那条,避免无限堆积挡住屏幕;右上角计数随时可见。
  • 关键信息要留底:「上次保存」镜像常驻工作区,记录结果与时间;Toast 只负责即时反馈,会消失的内容不能是唯一信息来源。
  • 可重试与可关闭:失败提示提供「重试」(转为成功并开始倒计时)和「关闭」;所有提示都能被用户主动结束。

什么时候用 Toast

从「要不要立刻处理」判断,而不是看反馈多不多。

适合

已完成、不需要用户立刻处理的非阻塞反馈:保存成功、已复制到剪贴板、已加入收藏、链接已生成。用户就算错过,主流程也不受损。

先别用

需要用户决策的错误(→ alert 或表单内错误)、必须确认的操作(→ popconfirmmodal)、长时间停留的通知(→ notification)、关键数据或不可恢复的结果(→ 留在页面里,不要只放进会消失的提示)。

怎么用:从触发到留底的最短路径

一次到位的检查顺序。

  1. 定寿命:成功加 3 秒自动消失定时器;失败不要定时器,留住直到用户处理。
  2. 给语义:成功用 role="status"、失败用 role="alert";aria-live 让读屏同步获得反馈。
  3. 给出口:每条提示可关闭;失败再给重试;堆叠超过上限时明确淘汰最旧,而不是悄悄堆叠。
  4. 给留底:关键结果(上次保存、错误原因)同时在页面里持久展示,不只依赖会消失的提示。
  5. 给键盘与减动效:提示内按钮可 Tab 到达;倒计时与入栈动画在 prefers-reduced-motion 下静态呈现,不挡阅读。

同一保存:正例与反例

目标都是反馈保存结果。差别只在成功与失败的寿命是否区分,以及关键信息有没有留底。

正例

成功提示带 3 秒倒计时自动消失,不挡主任务;失败提示留住并给「重试」;堆叠限 3 条;页面里「上次保存」同步留底,用户错过提示也不丢信息。

用户知道发生了什么、要不要重试,主流程不被打断。
反例

成功失败都 3 秒消失、没有重试;失败原因只写在提示里;连点 8 条堆满屏幕挡住按钮;读屏完全不知道发生过什么。

用户错过提示就不知道保存失败,进度实际丢了。

快速自测

弱网时「保存学习进度」连续失败 3 次,最合适把失败原因放在哪里?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。