作者:Dominik Dorfmeister,发布于 2022 年 7 月 14 日。
我们很高兴地宣布下一版本的 TanStack Query,之前称为 react-query 🎉。品牌重塑和重组为 monorepo 最终使我们能够将 react-query 的乐趣带给其他框架,例如 vue、svelte 或 solid。
TanStack Query 构建于一个不可知的核心之上,并在其上构建了特定于框架的适配器。这使我们能够共享使 TanStack Query 变得出色的核心逻辑,例如 QueryClient 或 Query Subscriptions 在框架之间,同时在适配器内部也具有特定于框架的代码,例如 hooks(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 以来,持久化器作为实验性功能存在。它们允许您将 Query Cache 同步到外部位置(例如 localStorage)以供以后使用。在收到大量反馈后,我们改进并改进了 API,现在我们开箱即用地提供了两个主要的持久化器
这些持久化器在大多数用例中都运行良好,但是没有什么能阻止您编写自己的持久化器 - 只要它符合所需的接口即可。
React 18 今年早些时候发布,v4 现在对其及其带来的新的并发特性提供了一流的支持。为了实现这一点,内部订阅已被重写,以利用新的 useSyncExternalStore hook。
追踪查询是一种性能优化,在 v3.6.0 版本中作为可选功能添加。此优化现在是 v4 中的默认行为,应该可以为你的渲染性能带来不错的提升。
随着时间的推移,我们的一些 API 变得相当复杂,甚至到了相互矛盾的程度。一些例子包括
我们清理了很多这些不一致之处,以使开发者体验更加出色。v4 还附带了一个 codemod 来帮助你进行迁移。
首先是清理文档。正如你可能已经注意到的,它们仍然非常特定于 React,并且时不时地引用 react-query。请耐心等待,我们旨在重组文档,并且随时欢迎 PR。
此外,还有更多的适配器。目前,只有 React 适配器存在,但我们渴望尽快添加更多框架的适配器。