
Nuqs是为 React 设计的类型安全的 URL 状态管理器,最近在它的最新版本中发布了一系列新功能,提供了一些人们期待已久的能力,比如防抖的URL更新、标准化的模式互操作性、更细粒度的重新渲染控制以及实验性的路由集成。
一项突出的特性是 URL 更新的防抖支持。以前,Nuqs 依赖于throttleMs
属性进行节流,以限制历史 API 调用的速率。在快速输入变化(如搜索输入)时,使用这种方式可能会导致过多的请求。现在有一个新属性叫做 limitUrlUpdates(它取代了现有的throttleMs选项),并且接受一个防抖函数(debounce):
现有的throttleMs
选项已被弃用,转而支持合并后的limitUrlUpdates
策略,它允许同时进行节流和防抖模式。
从 v2.5 版本开始,可以生成标准模式。Nuqs 现在允许从搜索参数定义中派生出一个校验/解析模式,使得可以与tRPC或路由模式等工具进行集成。
键隔离(key isolation)通过细粒度订阅提供了性能改进。以前,URL 的任何变化都会导致所有使用useQueryState
的组件重新渲染,这是因为共享的 URL 对象改变了引用。在 v2.5 中,Nuqs 现在能够避免这种情况,只有当特定的键发生变化时,组件才会重新渲染。这种行为被内置到了 React SPA、React Router、Remix 和 TanStack Router 的核心适配器中。值得注意的是,Next.js 是一个例外,因为它内部使用了单一的 URLSearchParams 上下文,这始终会改变引用。Nuqs 的维护者提到了与 Next.js 正在进行合作,以缓解这个问题。
Nuqs 2.5 还增加了实验性的TanStack Router支持。有一个兼容性适配器允许 Nuqs 管理的 URL 状态与 TanStack Router 的路由逻辑并存,而标准模式接口有助于将 URL 状态定义与路由验证联系起来。虽然特性对等方面依然有限,但这为 React 框架之间的 monorepos 或共享逻辑打开了大门。
这个版本还包括了许多改善开发人员生活质量的更新,比如导出的package.json
支持模块联合,更多的全局默认适配器选项,以及更好的默认值类型推断。另外,值得注意的是,Nuqs 现在是一个“零运行时依赖”的库,尽管提供了新功能,它的大小仍然不到 5.5kb。
最近,在更小的 2.6 版本中,增加了几项增强功能。新的processUrlSearchParams钩子允许开发者拦截和转换 URLSearchParams。当使用shallow:true
与防抖时,现在也会显示一个新的警告消息。
有的用户在讨论 2.5.0 版本的帖子上评论强调了新特性:
nuqs@2.5.0 太强大了,比如防抖、标准模式、键隔离、TanStack Router 支持。
Nuqs 是一个开源项目,专注于使 URL 查询参数成为 React 应用程序中的一等状态。它提供了一个useQueryState
钩子,以反映了useState
的语义,内置了类型安全性、序列化/解析和服务器/客户端协调。随着 2.5 版本的发布,Nuqs 加强了与模式工具的集成,为开发者提供了更多对更新行为的控制,并通过隔离减少了不必要的重新渲染,同时为更好的路由互操作性奠定了基础。
原文链接:
Nuqs Adds Debounce, Standard Schema Integration and Key Isolation
评论