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