【问题标题】:What is the main difference between React Query and Redux?React Query 和 Redux 的主要区别是什么?
【发布时间】:2021-07-26 06:36:45
【问题描述】:

目前我在不同的项目中使用redux 进行状态管理。几天前,我听说了react-query,它也用于状态管理并提供缓存和异步获取。我试图找出这两个库之间的主要区别。 我应该在哪里使用react-query,在哪些情况下我需要 redux。

【问题讨论】:

  • 两者都可以使用,redux 有 rtk-Query 可以替代 react-query。

标签: reactjs redux react-query


【解决方案1】:

React-query 就是您所说的专用库。它为您保存一个 api 缓存 - 仅此而已。而且由于它是专门的,它可以很好地完成这项工作并且需要更少的代码。

另一方面,Redux 为您提供了存储任何东西的工具 - 但您必须编写逻辑。所以你可以在 Redux 中做更多的事情,但你必须编写一些专门的库不需要的代码。

您可以同时使用它们:反应查询中的 api 缓存,Redux 中的其余全局状态。

也就是说,官方 Redux Toolkit 还附带了一个 api 缓存抽象 RTK Query 自 1.6 版以来,具有与 React Query 类似的功能集,但总体上有一些不同的概念 - 你可能还想检查一下。

【讨论】:

  • 这是否意味着如果我们使用 redux-toolkit 我们不需要使用 react 查询?
  • 是的,除非你真的想要。
  • RTK 查询集中 API 调用与反应查询不同
  • @HossamMaher 是的,他们有不同的做法,但你编写的代码量非常相似。至于风格:每次切换库时这是正常的——每一个都会感觉有点不同,并且强调不同的东西。
【解决方案2】:

react-query 旨在处理存储在远程服务器上的数据。要访问这些数据,您的应用需要使用异步请求。这是您可能想要处理缓存、加载状态、网络故障等的地方。

这就是 react-query 的亮点。

另一端的 Redux 在客户端处理数据。例如文本输入的内容或模式的状态。您无需处理与网络相关的问题。但是您确实需要处理复杂的因果序列。

这就是 redux 的亮点

【讨论】:

  • 谢谢,是不是 redux 工具包还提供了 memozing 选择器,可以存储服务器端数据并在更新时更改?
  • 可能!我猜你说的是 RTK Query,动机部分说的是 React Query:redux-toolkit.js.org/rtk-query/overview#motivation
  • 但是redux-saga也适用于远程服务器上的一些数据。
【解决方案3】:
  • React-Query = 服务器状态库(保存/缓存 api 响应)
  • Redux = 客户端状态库(全局可访问的客户端状态 应存储)。

【讨论】:

    【解决方案4】:

    React Query 管理服务器状态。它的主要功能是处理服务器和客户端之间的功能。

    Redux 处理客户端状态。 Redux 可用于异步存储数据。

    因此,它们在不同的层次上都有其独特的作用,并且可以同时使用。

    【讨论】:

    • 你能告诉更多关于“服务器状态”的信息吗?
    • 服务器状态是存储在服务器上的数据,您的应用需要在客户端和服务器之间来回访问才能访问此状态。您可能需要缓存、加载状态等。这就是 react-query 的亮点。客户端上的数据是存在于客户端中的数据。例如文本输入的内容或模式的状态。您不需要处理延迟、缓存、网络错误等。但您需要处理复杂的因果序列。这就是 redux 大放异彩的地方。
    【解决方案5】:

    Redux 和react-query 是两个非常不同的东西:react-query 用于数据同步,Redux 是全局状态管理器。 react-query 用于将所有应用程序保持同步到同一个数据库,Redux 用于将应用程序状态的一部分共享给需要读取该状态的所有组件。

    一个例子:我有一个应用程序可以与其他用户聊天。使用react-query,我让所有应用程序与用户收到的所有消息保持同步,然后我将消息存储在Redux,以便在聊天页面和历史聊天页面上显示消息。

    【讨论】:

      【解决方案6】:

      有关react-query 和redux 的更多信息,请查看link

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
      猜你喜欢
      • 2020-01-21
      • 2020-07-18
      • 2022-09-25
      • 2016-11-19
      • 2018-07-16
      • 2013-06-17
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多