SuperAPI AI 工具集

nuqs-v2

前端与建站

查看项目

更新于 10-27 16:23

技能介绍

用途

nuqs 是一个类型安全的 URL 查询状态管理库,支持 Next.js、React Router、TanStack Router、Remix 以及纯 React。本技能为社区整理的 nuqs 最佳实践指南,覆盖 nuqs v2.5–v2.9 版本,包含 8 个类别共 39 条规则,按影响程度排序,用于指导代码生成、重构与代码审查。

适用时机

在以下情况参考本指南:

  • 使用 nuqs 实现基于 URL 的状态
  • 在 Next.js 或 React Router 项目中设置 nuqs
  • 为 URL 参数配置解析器
  • 将 URL 状态与 Server Components 集成
  • 优化 URL 更新性能(limitUrlUpdates、key isolation)
  • 通过 Standard Schema 与 tRPC / TanStack Router / 表单共享解析器定义
  • 调试 nuqs 相关问题

规则类别与优先级

优先级 类别 影响 前缀
1 解析器配置 关键 parser-
2 适配器与设置 关键 setup-
3 状态管理 高 state-
4 服务端集成 高 server-
5 性能优化 中 perf-
6 历史与导航 中 history-
7 调试与测试 低-中 debug-
8 高级模式 低 advanced-

快速参考

1. 解析器配置(关键)

  • parser-use-typed-parsers — 对非字符串值使用类型化解析器
  • parser-with-default — 对非可空状态使用 withDefault
  • parser-enum-validation — 对受限值使用枚举解析器
  • parser-array-format — 选择正确的数组解析器格式
  • parser-json-validation — 验证 JSON 解析器输入
  • parser-date-format — 选择合适的日期解析器
  • parser-index-offset — 使用 parseAsIndex 实现基于 1 的 URL 显示

2. 适配器与设置(关键)

  • setup-nuqs-adapter — 用 NuqsAdapter 包裹应用
  • setup-use-client — 为 hooks 添加 'use client' 指令
  • setup-import-server — 从 nuqs/server 导入服务端工具
  • setup-nextjs-version — 确保兼容的 Next.js 版本
  • setup-shared-parsers — 在专用文件中定义共享解析器
  • setup-default-options — 在 NuqsAdapter 上配置应用级默认值(v2.5+)

3. 状态管理(高)

  • state-use-query-states — 对相关参数使用 useQueryStates
  • state-clear-with-null — 用 null 清除 URL 参数
  • state-avoid-derived — 避免从 URL 参数派生状态
  • state-options-inheritance — 使用 withOptions 进行解析器级配置
  • state-setter-return — 使用 setter 返回值访问 URL
  • state-standard-schema — 使用 Standard Schema 进行跨库验证(v2.5+)

4. 服务端集成(高)

  • server-search-params-cache — 对 Server Components 使用 createSearchParamsCache(或 createLoader)
  • server-shallow-false — 使用 shallow:false 触发服务端重新渲染
  • server-use-transition — 集成 useTransition 处理加载状态
  • server-parse-before-get — 在 Server Components 中先调用 parse() 再调用 get()
  • server-next15-async — 处理 Next.js 15+ 中的异步 searchParams

5. 性能优化(中)

  • perf-throttle-updates — 使用 limitUrlUpdates 节流快速 URL 更新
  • perf-debounce-search — 使用内置 limitUrlUpdates 对搜索输入进行防抖
  • perf-clear-on-default — 使用 clearOnDefault 保持 URL 简洁
  • perf-avoid-rerender — 对使用 URL 状态的组件进行记忆化(Next.js)
  • perf-key-isolation — 在 Next.js 之外依赖 key isolation(v2.5+)
  • perf-serialize-utility — 使用 createSerializer 生成链接 URL

6. 历史与导航(中)

  • history-push-navigation — 选择 history:push 还是 history:replace
  • history-scroll-behavior — 控制 URL 变化时的滚动行为

7. 调试与测试(低-中)

  • debug-enable-logging — 启用调试日志进行故障排查
  • debug-testing — 测试带 URL 状态的组件

8. 高级模式(低)

  • advanced-custom-parsers — 为复杂类型创建自定义解析器
  • advanced-url-keys — 使用 urlKeys 生成更短的 URL
  • advanced-eq-function — 为对象解析器实现 eq 函数
  • advanced-framework-adapters — 使用框架特定的适配器
  • advanced-process-url-search-params — 使用 processUrlSearchParams 规范化 URL 形态(v2.6+)

如何使用

阅读各个参考文件以获取详细说明和代码示例:

  • Section definitions — 类别结构与影响级别
  • Rule template — 添加新规则的模板

参考文件

文件 描述
compiled.md 包含所有规则的完整编译指南
references/_sections.md 类别定义与排序
assets/templates/_template.md 新规则模板
metadata.json 版本与参考信息

交互

  • 与 ahooks-v3 互补,用于不在 URL 中的分组/本地状态
  • 与 tanstack-query-v5 互补,用于异步服务端数据(来自查询的加载/错误)
  • 状态决策树:URL 可分享的 UI → nuqs;分组临时 UI → ahooks;异步数据 → TanStack Query