U7.08.2Jumping to a detail page must carry the current filter context设计
跳转到详情页时需携带当前的筛选上下文
别名: 上下文传递 · 深链接 · 筛选条件保留
概念解释
从仪表盘点击某个数据点跳转到详情页时,用户在仪表盘上设置的筛选条件(时间范围、渠道、地区、设备类型等)构成了"我在看什么"的语境。详情页如果重置为默认筛选,用户看到的数据范围与他们在仪表盘上看到的不同,两个页面上的数字对不上,用户要么误以为数据不一致,要么不得不手动重设一遍筛选。跳转时携带上下文是保证"从发现到解释"路径连贯的前提条件。
机制
上下文丢失的根源在于筛选状态存储的位置:如果筛选条件只存在于前端组件的内存里而没有编码到 URL 或跳转参数中,页面导航(无论是跳详情还是刷新)都会重置状态。技术上的解法是把筛选状态序列化到 URL 查询参数中,这样跳转详情页时 URL 天然携带上下文,且链接可以被分享、收藏和恢复——一举解决传递、共享、回退三个问题。用户视角的失真更隐蔽:详情页重置为默认筛选后显示的数据"看起来正常",用户不会立刻发现范围变了——他们看到的是一个数字,而不知道这个数字回答的是另一个问题。这类失真在时间范围上尤其危险:仪表盘上看的是"最近 7 天的异常率 3%",详情页默认"今天",异常率变成 1.2%,两个数字都正确但不可比。
边界
并非所有筛选都应该传递:如果仪表盘上有多个互斥的视图模式(如图表模式与表格模式),某些筛选在详情页可能无意义,强行传递反而制造混乱。上下文传递还有一个反直觉的边界——传递应该显式可见:详情页应该把从上一页带来的筛选条件显示出来(如面包屑或筛选器回显),让用户知道当前数据的范围是如何决定的,而不是静默地替用户做决定。安全边界也需要考虑:如果详情页包含敏感数据,通过 URL 传递的上下文可能暴露在浏览器历史和日志中。
怎么落地
- 仪表盘的所有筛选条件同步编码到 URL 查询参数,详情页跳转链接继承全部参数。
- 详情页顶部回显接收到的筛选条件(时间范围、维度值),与仪表盘上看到的一致。
- 敏感数据的场景改用 POST 或服务端会话传递上下文,避免 URL 泄露。
- 验证:在仪表盘设置非默认筛选后点击一个数据点跳到详情页,逐一核对详情页上每个数字的时间范围与筛选条件是否与来源页一致;不一致即上下文传递失败。