中继(使用 GraphQL)和 Redux 之间的区别?

Difference between to Relay (with GraphQL) and Redux?

Relay 和 Redux 可以互为替代品吗?什么时候用最好?我们可以将 Relay、GraphQL 与 Redux 一起使用吗?

REDUX:

  1. Redux 是库
  2. Redux 是您应用程序的状态容器
  3. 它是存储与您的应用程序相关的所有信息的单点源。
  4. 您创建操作、reducer 并通过调度操作更新您的状态。
  5. 状态是不可变的,您不能更新它。始终返回状态的克隆版本。
  6. 您使用 redux-thunk / redux-saga 等包来调用 api。根据 API 的响应,您更新您的状态。

现在,如果您在 redux 中看到很多样板代码。

我个人觉得 redux 非常酷而且方便,但你需要注意以下几点:-

  1. 正在创建 actions/reducers/store。
  2. 调度操作和更新商店。
  3. 正在处理 api 个电话。
  4. 实现缓存。
  5. 维护商店。
  6. 维护组件中的预期道具。

中继:

  1. Relay 是一个 Javascript 框架。
  2. 为您处理商店。您不必担心更新商店
  3. 处理您的 API 电话(这是最好的功能)
  4. 商店是不可变的,克隆版本被返回。
  5. 使用 GraphQL(这部分有点棘手,因为您还需要了解 graphql)。经过一段时间的研究后,我意识到这是一个主要缺点。但是一旦你了解了 graphql 它真的很强大
  6. 适用于查询和变更

中继真的非常强大,并提供以下好处:-

  1. 您无需处理 API 电话。中继网络层负责处理它。您可以通过指定查询和变更来做到这一点
  2. 让中继真正有用的最佳特性之一是缓存实现。它大大减少了 api 调用。

Relay 真的很强大,但是当你开始的时候会有一些开销。以下是先决条件:-

  1. 反应
  2. Graphql
  3. ES2015JS

完成先决条件后,了解中继的实际工作原理有点棘手,不像 redux 那样容易。但是,一旦您了解了它的工作原理以及为什么将其引入画面,您就会真的感到惊讶。它确实是一个非常强大的工具。

因此,如果您的项目是中小型项目,我会说使用 redux,如果是大型中继。但是如果你正在研究 react-native,请尝试一下 relay,它真的很有趣。

此外,是的,您可以将 redux 与中继一起使用。