Dominik Dorfmeister 写于 2022年7月14日. 我们激动地宣布 TanStack Query 的下一个版本,它以前被称为 react-query 🎉。 品牌重塑和重组为 monorepo 最终使我们能够将 react-query 的乐趣带给其他框架,例如 vue、svelte 或 solid。
TanStack Query 构建于一个与框架无关的核心之上,并在其上层提供特定于框架的适配器。这使我们能够在框架之间共享使 TanStack Query 出色的核心逻辑,例如 QueryClient 或 Query Subscriptions,同时也在适配器内部拥有特定于框架的代码,例如钩子(useQuery 和 useMutation)。
npm i @tanstack/react-query
# 或
yarn add @tanstack/react-query
npm i @tanstack/react-query
# 或
yarn add @tanstack/react-query
v4 已将 TanStack Query 从一个数据获取库发展成为一个真正的异步状态管理器。以前关于必须具有活动网络连接的所有假设现在都已不复存在,因此 TanStack Query 真正适用于任何 Promise,无论您如何生成它。 为实现这一点,我们引入了一个全新的网络模式,可帮助 TanStack Query 决定查询何时应考虑在线状态。
自 v3 以来,持久化工具一直作为实验性功能存在。它们允许您将查询缓存同步到外部位置(例如 localStorage)以供日后使用。在收到大量反馈后,我们改进并完善了 API,现在我们开箱即用地提供了两个主要的持久化工具:
这些持久化工具在大多数用例中都运行良好,但没有什么能阻止您编写自己的持久化工具——只要它遵守所需的接口即可。
React 18 已于今年早些时候发布,v4 现在对其及其带来的新并发特性提供了一流的支持。为实现这一点,内部订阅已重写以利用新的 useSyncExternalStore 钩子。
跟踪查询是 v3.6.0 中添加的一项性能优化,作为可选功能。此优化现在是 v4 中的默认行为,这应该会给您带来不错的渲染性能提升。
随着时间的推移,我们的一些 API 变得相当复杂,甚至到了相互矛盾的程度。一些例子包括:
我们清理了许多此类不一致之处,以使开发人员体验更好。v4 还附带了一个 codemod 来帮助您完成迁移路径。
首先是清理文档。您可能已经注意到,它们仍然非常特定于 React,并且不时引用 react-query。在我们努力重组文档的过程中,请耐心等待,我们随时欢迎 PR。
此外,还有更多的适配器。目前,只有 React 适配器存在,但我们渴望尽快添加更多框架。