文章预览
上图,来自 钉钉用户体验 公众号,它的不优雅之处:将“状态”与“消息”耦合,降低组件适应性。 思考用例:某用户拒收“钉盘助手”的消息,然后更换了一部新手机,本地的历史聊天记录全部丢失,此时该用户再次进入当前的对话, 也许 无法 获知“已拒收”的状态。 通常来说,聊天记录将保留在设备本地,账户的“已拒收”状态设置保存在云端。即便聊天记录在云端备份,同步获取“消息”和获取“状态”也应该是两个完全不同的请求。 消息,理论上是“推”;状态,理论上是“拉”。并且,这个特例中:一旦拉取“已拒收”就无须再“推”, 逻辑 比较特殊。 将两个完全不同的请求,绑定在一个组件,将发生有趣的推理: 为了通知“已拒收”,不得不推送一条用户“无法拒收”的消息 。 如果,额外单独设计一个请求“状态”的界
………………………………