区别:Redux和Relay

时间:2016-06-26 08:19:28

标签: reactjs redux relayjs

我已经阅读了基于 redux和relay 的文章/文档的数量,但我仍然感到困惑,这两个库是如何不同的?
这两个库有哪些优点和缺点?
GraphQL在中继中的确切作用是什么?
哪个库更适合企业数据驱动的应用程序,如CRM / ERP?

1 个答案:

答案 0 :(得分:52)

两者都是Flux实现,一个用于管理应用程序状态的Facebook框架。

  • Redux :一般的javascript库,可帮助您处理应用程序中的状态管理。 Redux不依赖于反应 可以与任何库一起使用。 react-redux库已经习惯了 容易整合与redux的反应。在redux中的应用程序状态 位于单个商店,每个组件都可以访问该状态, 并且还可以通过调度操作来更改状态。 Redux没有 处理开箱即用的数据,但可以手动完成: 只需创建一个从服务器获取数据的操作 商店。

  • 接力:由facebook创建反应,也在内部使用。 Relay与redux类似,因为它们都使用单个 商店。主要区别在于中继仅管理状态 源自服务器,并且通过使用对状态的所有访问 GraphQL查询(用于读取数据)和突变(用于更改数据)。 Relay为您缓存数据,并为您优化数据获取 仅提取已更改的数据,仅此而已。接力也支持 乐观的更新,即在服务器之前改变状态 结果到了。

GraphQL 是一个使用声明性和可组合查询的Web服务框架和协议,并且解决了过度获取和取出不足等问题,它被认为是替代REST的有效候选者。
GraphQL不依赖于中继,其他方式,relay依赖于graphql。 Graphql可以在redux中使用,每次完成其他数据提取都是一样的。

正如您所看到的那样,继电器优于redux的主要优点是数据提取已经得到了解决,并且已经针对此进行了优化。
另一方面,它无法管理客户端的特定状态,但很少需要。

此外,IMO Relay更难学习和实施,但最终结果更好,更优化,但对于小型应用程序,我会选择redux。