使用Apollo时,Redux仍然具有相关性吗?
我最近一直潜入阿波罗2号,并且看到一篇值得注意的帖子,说他们已经删除了大量的还原代码,转而支持Apollo。
https://dev-blog.apollodata.com/reducing-our-redux-code-with-react-apollo-5091b9de9c2a
我知道Apollo 1在引擎盖下使用了redux,但在v2中已经弃用了,有几个消息来源指出使用apollo-link-state和Apollo Cache作为替代品。
Apollo Dev工具非常实用,但我发现自己经常希望使用Redux Dev Tool来查看应用程序的全局状态,使用时间旅行并查看所有调用的操作。
可能我还在使用Apollo,但我想知道将Redux与Apollo一起使用仍有优势吗?
更新 我找到了一个使用Apollo 2构建一个简单应用程序的人,这显然让我觉得在Apollo中完全没有必要使用Redux。
https://hptechblogs.com/central-state-management-in-apollo-using-apollo-link-state/
答案 0 :(得分:4)
反应应用中的状态管理是一个多维问题。它涉及协调/分析屏幕中不同组件的状态以及管理异步状态+数据流(http,持久性等)。 Apollo最初只是解决了异步状态管理问题。它将graphql http调用抽象为组件的内部。 Redux通过管理本地同步状态开始了另一方面。今天,虽然这两种解决方案都能够提供本地和远程数据状态管理实现,并且可以被认为是可互换的。
两种解决方案之间最大的区别在于潜在的状态转换理念。反对纯粹的状态转换的想法,阿波罗需要更少的锅炉板。另一方面,Redux遵循更严格的方法来确保以纯粹的方式进行统计转换。我个人喜欢将Redux与GraphQl一起使用,因为我很喜欢让我的状态成为一系列动作的结果。它可以保持事物的可预测性,同时仍然可以通过像redux-saga这样的异步处理中间件或类似的东西来使用GraphQl。
TLDR:Apollo更简单,因为它允许库执行大量的异步工作,但代价是不使用Redux的强大动作命令模式。
答案 1 :(得分:3)
我找到了一个使用Apollo 2构建一个简单应用程序的人,这显然让我觉得在Apollo中完全没有必要使用Redux。
https://hptechblogs.com/central-state-management-in-apollo-using-apollo-link-state/