C2.07.4Touch-down preview and touch-up commit设计
按下即预览、抬起才提交的组合
别名: 按下预览 · 抬起提交 · 组合反馈
概念解释
按下即预览、抬起才提交把即时反馈和可取消性结合:触点落下立刻显示高亮、候选、放大内容或拟执行效果,真正改变数据或导航则等抬起后再发生。用户既感到跟手,也可在提交前核对和撤回。
机制
按下进入预览状态,移动更新预览或取消,抬起时若仍在有效条件内才提交。预览必须可逆且与最终结果一致;若预览已经产生外部副作用,用户会误以为仍可取消而实际不能。一个真实存在、容易被后来者不小心破坏的工程陷阱是:为了让抬起提交那一刻看起来"零延迟",工程师有时会在按下阶段就提前发出网络请求或预热某个耗时操作,让数据提前准备好,等真正抬起提交时直接用现成结果——这本身是常见的性能优化手法,但它恰恰违反了这条规则的前提:预览阶段被认为应该是纯粹本地、无副作用、可以随时撤销的,一旦悄悄夹带了一次已经发出的网络请求,用户滑出取消能撤回的只是界面上的显示状态,撤不回那个已经打到服务器上的请求,这个性能优化和"预览必须可逆"这条约束之间产生了真实的冲突,而且往往是由不了解这条约束的人后期加上去的。
边界
预览不应伪装成已提交。网络请求、扣费或发送消息不能在按下阶段悄悄开始;连续控制可在按下更新临时值,但需明确最终确认和撤销规则。
怎么落地
- 用视觉、触觉或声音立即显示候选状态,并区别于已提交状态。
- 支持滑出取消,确保取消时预览完全恢复。
- 验证办法:专门审查按下阶段的代码路径,检查是否存在任何网络请求、埋点上报或其他有副作用的调用被提前触发到了抬起提交之前——这类隐患通常是后续加入的性能优化,而不是最初的交互设计本身引入的。