我可以用 redux 提供者和 apollo 提供者包装我的应用程序吗?

Posted

技术标签:

【中文标题】我可以用 redux 提供者和 apollo 提供者包装我的应用程序吗?【英文标题】:Can I wrap my application with both a redux provider and an apollo provider? 【发布时间】:2019-03-07 06:23:30 【问题描述】:

我可以用'react-redux''react-apollo' 来包装我的应用程序,还是应该选择其中一个?

我读过的几个关于将 Apollo 用于乐观 UI 的示例将它与在 redux 中创建相同的结果以及这将是多少工作进行了对比。

我已经在应用程序中使用 redux 和 redux-saga,并且正在考虑是否应该将 Apollo 客户端用于更多的事情,而不仅仅是发出请求。

这是我正在做的代码示例:

return (
    <ApolloProvider client=client>
        <Provider store=store>
            <ConnectedRouter history=history>
                <ScrollToTop>
                    <App />
                </ScrollToTop>
            </ConnectedRouter>
        </Provider>
    </ApolloProvider>
);

【问题讨论】:

【参考方案1】:

您也在包装路由器提供程序 - 主题、上下文...多个提供程序没有错;)

Local state 可以代替 redux 用于某些共享的应用程序状态/数据/逻辑(解析器),但在许多情况下 redux 仍然具有优势。

【讨论】:

Apollo 对地方州的处理方法需要一堆样板文件,但没有带来很多东西。不可否认,Redux 也是重量级的,但它更健壮,具有时间旅行和一套很棒的调试工具。

以上是关于我可以用 redux 提供者和 apollo 提供者包装我的应用程序吗?的主要内容,如果未能解决你的问题,请参考以下文章

Apollo 客户端的全局加载标志

Apollo GraphQL 变量查询

Apollo 客户端和 Redux 设置导致无限渲染循环

React Apollo 查询返回后调度 Redux 操作

Apollo 客户端缓存与 Redux

Redux + Apollo:如何规范化和格式化响应数据?