我目前在不同的项目中使用redux
进行状态管理。几天前,我听说了react-query
,它也用于状态管理并提供缓存和异步获取功能。我正在尝试弄清这两个库之间的主要区别。
在哪些情况下应该使用react-query
,以及何时需要使用redux。
我目前在不同的项目中使用redux
进行状态管理。几天前,我听说了react-query
,它也用于状态管理并提供缓存和异步获取功能。我正在尝试弄清这两个库之间的主要区别。
在哪些情况下应该使用react-query
,以及何时需要使用redux。
React-Query是一种专门的库,它为您保存API缓存 - 仅此而已。由于它是专门的,因此它可以很好地完成这项工作,并需要较少的代码。
另一方面,Redux为您提供了工具,可以储存几乎任何东西 - 但您必须编写逻辑。因此,在Redux中,您可以做更多的事情,但可能需要编写使用专门库不必要的代码。
您可以同时使用它们: 在React Query中使用API缓存,在Redux中存储其他全局状态。
话虽如此,官方的Redux Toolkit也随版本1.6一起提供了一个API缓存抽象层RTK Query,具有类似于React Query的功能集,但是总体上具有一些不同的概念 - 您可能还想检查一下它。
react-query
旨在处理存储在远程服务器上的数据。为了访问这些数据,您的应用程序需要使用异步请求。这就是您可能希望处理缓存、加载状态、网络故障等的地方。
这就是react-query的优势所在。
另一方面,Redux
处理的是客户端数据。例如文本输入框的内容或模态框的状态。您不需要处理与网络相关的问题。但您需要处理复杂的因果关系序列。
这就是redux的优势所在。
Redux
和 react-query
是两种非常不同的东西: react-query
用于数据同步,Redux
是全局状态管理器。 react-query
用于保持所有应用程序与同一数据库同步,Redux
用于共享应用程序状态的部分,以便所有需要读取该状态的组件都可以访问。
例如:我有一个与其他用户聊天的应用程序。使用 react-query
可以使所有应用程序与所有接收到的消息保持同步,然后将这些消息存储在 Redux
中,以便在聊天页面和历史聊天页面上显示消息。
React Query 管理服务器状态。其主要功能是在服务器和客户端之间处理函数。
Redux 处理客户端状态。Redux 可用于存储异步数据。
因此,它们在不同层面上拥有其独特的作用,两者可以并存。
您可以简单地认为:
顺便说一下,我现在使用 context
管理同步状态,React Query
管理异步状态。
Redux 是一个很好的选择,如果你的应用程序具有复杂的状态管理或者需要在多个组件之间共享状态。
另一方面
React Query 可以用于需要大量数据获取的应用程序。它提供了从 API 获取、缓存和更新数据的功能。
简而言之,我们可以说,如果我们有很多 API 需要处理,并且我们的主要功能是显示来自 API 的数据,则 RQ 是更好的选择。另一方面,如果您需要更多控制和数据操作应用程序的状态,则 Redux 是更好的选择。
react-query:
redux: