E5.16.4pin and nav state sync设计
固定项与常规导航重复时需保持状态同步
别名: 固定项同步 · duplicate nav state · 双入口状态
概念解释
同一地点既出现在树上,又出现在固定区,就有了两个入口。双入口的状态必须同步(pin and nav state sync):选中、未读、禁用、改名、消失,两边要说同一句话。不同步时,人会以为那是两个地方,或以为固定的是一份过期的拷贝。
机制
快捷是到达的别名,不是对象的副本。别名却常常在实现上变成第二份记录:树上的项有未读数,固定项自己又存了一份;树上的项被权限拿掉了,固定项还亮着。用户从固定进入,看到的是空的或报错的页面,信任从近路转移到「这产品的入口会骗人」。选中态不同步更常见:从树进入某页,固定区那一项仍像未选,人以为没进去;或者两边同时高亮,选中作为位置信号就废了。
改名和移动是另一类不同步。树节点改了名称或从 A 组搬到 B 组,固定项仍显示旧名、点进去却落到新处(或 404)。别名没有跟着引用走,快捷从近路变成断链。
边界
「最近打开」若被设计成历史而不是别名,它可以保留已删除对象的名称并标明失效,那是历史语义,不是同步失败。离线缓存可以暂时显示旧未读,但连上之后必须对齐,并避免在离线时用固定入口做出会失败的写操作还不提示。两端视觉样式可以不同(固定更紧、树更完整),但状态位(选中、徽标、可用)不能不同。
怎么落地
- 固定项只存对树节点的引用,未读、名称、权限、选中都读同一份源,不要各写各的。
- 节点被删或无权时,固定项当场消失或标明失效,不要继续假装可进。
- 从任一入口进入,两个表面的选中态一起更新;不要出现双高亮或双不亮。
- 验证:在树里改名、标未读、撤权限,看固定区是否同一瞬间反映。从固定进入后,树上对应项应显示为当前位置。制造一个已删节点的旧固定项,点击必须得到失效说明而不是空白页。