【问题标题】:Difference between : Redux and Relay区别:Redux 和 Relay
【发布时间】:2016-10-28 10:32:57
【问题描述】:

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

【问题讨论】:

    标签: reactjs redux relayjs


    【解决方案1】:

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

    • Redux:通用 javascript 库,可帮助处理应用程序中的状态管理。 Redux 不依赖于反应,并且 可以与任何库一起使用。 react-redux 库用于 轻松将 react 与 redux 集成。在 redux 中应用程序状态 位于单个存储中,每个组件都可以访问状态, 并且还可以通过调度动作来改变状态。 Redux 没有 处理开箱即用的数据获取,尽管可以手动完成: 只需创建一个从服务器获取数据的操作 商店。

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

    GraphQL 是一个使用声明式和可组合查询的 Web 服务框架和协议,解决了过度抓取和抓取不足等问题,被认为是替代 REST 的有效候选者。
    GraphQL 不依赖于中继,相反,中继依赖于 graphql。 Graphql 可以在 redux 中以与其他所有数据获取相同的方式使用。

    正如您所见,relay 相对于 redux 的主要优势在于数据获取已经得到处理,并且为此进行了非常优化。
    另一方面,它不能管理客户端的特定状态,但这很少需要。

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

    【讨论】:

    • :哪个库更适合 CRM/ERP 等企业数据驱动的应用程序?
    • 中继,因为它为您处理数据获取和管理的棘手部分。另外我想说的是,relay 已经在我的“企业”视图中,而 redux 打算更轻。不过,这些只是意见。
    • @GershonPapi 对于较小的应用程序,您会使用中继吗?我想你的意思是 redux。
    • 你为什么说“这很少需要?”对于现代 SPA 应用,到处都需要它。
    • @Andy 当需要它时,通常需要在单个组件树上(意思是多个树之间不共享的状态),在这种情况下,可以使用组件状态 + 道具。当我说“很少需要”时,也许我夸大了,但我设法将 Relay 用于一个非常不简单的应用程序。
    猜你喜欢
    • 2016-04-08
    • 2013-06-04
    • 2017-08-31
    • 2016-03-01
    • 2018-10-21
    • 2016-08-03
    • 1970-01-01
    • 2018-05-17
    • 2016-11-19
    相关资源
    最近更新 更多