做产品 PMaker 首页
搜索
跟随系统
颜色主题
空格的键盘
确认弹窗的成本分摊反了先确认再执行一百次操作,一百次都被打断弹多了形成肌肉记忆,真误操照样拦不住先执行给撤销窗口正常操作完全不被打断出错的那次,花一秒钟点一下撤销判断只有两条:这个动作可不可逆、后果影响几个人

确认弹窗保护的是极少数误操作,代价是打断了绝大多数正常操作。撤销刚好反过来。

可撤销优于确认

危险操作给一次后悔的机会,好过弹窗问三遍。

与其在操作前问「你确定吗」,不如让操作先发生,再给一个能反悔的窗口。

你会遇到的现象:

  • 用户对所有确认弹窗都直接点确定,从来不读
  • 批量操作时要一个个确认,烦到不想用
  • 真的删错了,除了找你恢复没有别的办法

确认弹窗的问题在于它的成本分摊反了:一百次操作里可能只有一次是误操作,但一百次都被打断。而且弹得多了,用户会形成肌肉记忆,看到弹窗直接点确定——那一次真正的误操作照样拦不住。撤销把成本挪到了出错的那一次:正常操作完全不被打断,出错的那次花一秒钟点一下撤销。撤销是计算机界面里最老也最稳的交互技术之一,从最早的编辑器开始就在用。undo

删除、发送、提交这类高频操作,用户每天做几十次,每一次被弹窗打断,累积起来就是一层怨气;而真正的误操作次数远比想象中少。撤销只在出错时出现,平时对用户完全隐形——这是它比确认更友好的根本原因。

什么时候还是要确认

判断依据只有两条:这个动作可不可逆,以及后果影响几个人。两条都答「可逆、只影响自己」,就用撤销。

情况 用哪种 为什么
删一条笔记、归档一封邮件 撤销 可逆,影响只在自己
批量删除、批量修改状态 撤销 逐个确认会让人放弃使用
发送消息、提交表单 撤销 给几秒钟的撤回窗口就够
付款、转账 确认 钱出去了收不回来
作废合同、公开发布 确认 影响到别人,且对外可见
物理删除、清空数据 确认 真的没了。这时候还要提高确认成本

确实需要确认的时候,要提高确认的成本,让人无法条件反射地点过去:要求输入合同编号、把主按钮改成危险色、把「确定」换成具体的动词(「作废合同」而不是「确定」)。判断时还要看用户所在的上下文:正在专注批量操作时弹出的确认框,杀伤力最大。

撤销怎么做

  • **底层用软删除。**加一个删除标记而不是真的删掉。有了它,撤销就是把标记改回来,成本极低。
  • **撤销入口跟结果反馈放在一起。**删除后的提示条上直接带「撤销」,用户不用去别处找。
  • **窗口期给足。**五到十秒是常见值。批量操作可以更长,或者干脆做成回收站。
  • **撤销之后要能看到东西回来了。**只弹一句「已撤销」不够,列表里那一条要真的出现。
  • **回收站是撤销的长期版本。**短窗口来不及的时候,用户还有第二条路。

这套做法对 vibecoding 有个额外好处:软删除加撤销,本质上是让数据不会真的消失。AI 生成的代码在删除逻辑上出错的概率不低,有这一层兜底,出错的代价小很多。撤销入口就长在结果反馈上,配合操作必有反馈一起做,交互才算闭环。还有个细节:撤销要能撤销到底。删除恢复了但附件没回来,用户会以为整个都回来了。设计时把「撤销之后用户看到什么」写进验收标准。

参考资料

  1. Undo — Wikipedia