H3.12.2batch undo scope设计

批量操作的撤销需要说明是整体撤销还是可选择部分撤销

别名: 批量撤销 · all-or-nothing undo · 部分撤销

概念解释

一次选中二十项再删除,撤销键下去时人必须知道:是二十项全部回来,还是可以只拉回其中几项。范围要说清是整体还是可选部分。范围含糊时,人会不敢撤(怕把改对的也撤掉),或撤完才发现要的那几项回不来。这条只管批量的范围语义,不管倒计时,也不管多次动作的栈顺序。

机制

批量把许多对象收成一次意图,但发现失误时往往只对其中几项成立:名单里混进了不该删的。整体撤销匹配「这一次点击是错的」;部分撤销匹配「这一次点击里有几发是错的」。两种都合法,不能靠人猜。界面若只写「撤销」,默认会被理解成整体——这是单对象撤销的习惯。若实现其实是部分的,或其实已经有几项过了窗口,结果就会和习惯冲突。说明范围等于把集合边界画出来:二十中的二十,还是二十中可勾选。

边界

部分撤销需要每一项仍独立可恢复;若底层是一笔事务,只能整体,就不要提供假的逐项勾选。批量很大时,部分撤销的勾选本身会变成负担,应支持按规则反选(「只恢复刚才误带上的类型」)而不是二十个复选框走完。跨页全选的批量,范围说明里要含实际作用过的数量,不能写「撤销选择」却不提选了跨页的两百条。

怎么落地

  • 批量成功反馈写清「撤销全部 N 项」或提供「选择要恢复的项」。
  • 整体撤销不要在事后又留下几项没回来而不解释;若有项已不可逆,事先从可撤销集合里剔除并点名。
  • 部分撤销给出已选数量与恢复预览,确认前仍可改勾选。
  • 验证:删一个混有故意误选的列表,问「撤销会把哪几项带回来」。答成与实现不符,范围就没说清。

延伸

  • 同组H3.12.1 撤销窗口的剩余时间需要可见的倒计时提示 · H3.12.3 连续多次操作的撤销栈需要遵循后进先出的顺序 · H3.12.4 窗口到期后操作应明确转为不可逆,而非模糊过渡
  • 相邻H8.02 批量操作 · H3.13 部分失败的处置 · H3.04 撤销优于确认
  • 站内检索batch undo · undo scope · partial undo

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/H3.12.2