【问题标题】:apollo 2 a replacement for redux?阿波罗 2 是 redux 的替代品?
【发布时间】:2018-06-13 08:32:02
【问题描述】:

使用 Apollo 时 Redux 是否仍然相关?

我最近一直在研究 Apollo 2,并且看到一篇值得注意的帖子说他们已经删除了很多 redux 代码以支持 Apollo。

https://dev-blog.apollodata.com/reducing-our-redux-code-with-react-apollo-5091b9de9c2a

我知道 Apollo 1 在后台使用了 redux,但在 v2 中已弃用,并且一些消息来源指出使用 apollo-link-state 和 Apollo Cache 作为替代品。

Apollo 开发工具非常有用,但我发现自己经常希望使用 Redux 开发工具来查看应用程序全局状态、使用时间旅行并查看所有调用的操作。

可能我还在习惯 Apollo,但我想知道将 Redux 与 Apollo 一起使用是否还有优势?

更新 我发现有人使用 Apollo 2 构建了一个简单的应用程序,这显然让我认为 Redux 在 Apollo 中是完全没有必要的。

https://hptechblogs.com/central-state-management-in-apollo-using-apollo-link-state/

【问题讨论】:

    标签: reactjs redux apollo


    【解决方案1】:

    React 应用程序中的状态管理是一个多维问题。它涉及协调/分析屏幕中不同组件的状态以及管理异步状态+数据流(http、持久性等)。 Apollo 一开始只处理异步状态管理。它将graphql http调用抽象为组件的内部。 Redux 是从管理本地同步状态开始的。今天,尽管这两种解决方案都能够提供本地和远程数据状态管理实现,并且可以被认为是可互换的。

    两种解决方案的最大区别在于底层的状态转换理念。 Apollo 与纯状态转换的想法背道而驰,因此需要更少的样板。另一方面,Redux 遵循更严格的方法来确保 stat 转换以纯粹的方式发生。我个人喜欢将 Redux 与 GraphQl 一起使用,因为我非常喜欢让我的状态成为一系列操作的结果。它使事情保持可预测性,同时仍然使 GraphQl 能够被异步处理中间件(如 redux-saga 或类似的东西)使用。

    TLDR:Apollo 更简单,因为它允许库执行大量异步工作,但代价是不使用 Redux 令人敬畏的动作命令模式。

    【讨论】:

      【解决方案2】:

      Apollo GraphQL 客户端还可以与任何 REST 端点 https://www.apollographql.com/docs/link/links/rest.html 一起使用。所以你甚至不需要更改后端...

      【讨论】:

      • 目前这还不够稳定,无法添加到生产中,但我期待何时有更多支持。有人对这个库的问题采取了另一种方法:github.com/dacz/apollo-bridge-linkdefo 值得一看,因为它可能会使从 REST 迁移到真正的 GraphQL 服务器变得更加容易
      【解决方案3】:

      我发现有人使用 Apollo 2 构建了一个简单的应用程序,这显然让我认为 Redux 在 Apollo 中完全没有必要。

      https://hptechblogs.com/central-state-management-in-apollo-using-apollo-link-state/

      【讨论】:

        猜你喜欢
        • 2019-02-08
        • 2013-02-02
        • 2021-12-28
        • 2017-10-15
        • 2021-09-09
        • 2017-08-01
        • 2018-09-15
        • 2019-12-09
        • 2020-10-18
        相关资源
        最近更新 更多