返回文章列表

2026.04.01

搜索页的筛选条件应该能被 URL 记住

把关键词、分页、排序和筛选同步到查询参数,刷新和分享才可靠。

问题背景

这类问题常见于业务增长后的前端项目。页面还能跑,但新增需求越来越慢,问题定位越来越依赖个人记忆,最后所有人都怕改公共代码。

把关键词、分页、排序和筛选同步到查询参数,刷新和分享才可靠。 这篇文章更关心落地细节:怎么拆问题、怎么写代码或流程、怎么验收,而不是停在概念介绍。

真正耐用的前端方案通常不复杂,但边界会很清楚:哪些数据来自接口,哪些状态属于页面,哪些逻辑可以独立测试,哪些体验需要降级。

推荐做法

  • 把关键词、分页、排序和筛选同步到查询参数,刷新和分享才可靠。
  • 先把问题拆成数据、状态、视图、交互四个部分,不要一开始就改组件。
  • 找到项目里已经稳定运行的相似实现,沿用命名、目录和错误处理风格。
  • 给关键路径补最小可复现样例或测试,避免只靠刷新页面确认。

一个可直接借用的片段

type ApiResult<T> = { code: number; data: T; message: string };
type UserView = Pick<User, 'id' | 'name' | 'avatar'>;

容易踩坑

  • 不要把页面状态只放内存里,否则刷新和分享都会丢。
  • 不要让 URL 参数和内部状态互相覆盖。
  • 不要忘记后退按钮也是用户路径。

检查清单

  1. 是否能说清楚这个改动解决的具体问题。
  2. 是否有失败、空数据、慢网络或权限不足时的处理。
  3. 是否留下了后续维护者能看懂的命名和边界。
  4. 是否用命令、截图或真实页面验证过结果。
好的技术文章不只是告诉你“可以这么做”,还要说清楚什么时候不该这么做。前端工程 的很多经验,真正值钱的部分都在这些边界里。