ApolloProvider可以提供给州而不是道具吗?

时间:2017-07-07 21:06:29

标签: reactjs react-redux react-apollo

Redux的Provider组件和connect函数通过mapStateToProps提供对商店状态的包装组件的引用。正如可爱文章How to Build a Redux中所提到的,这样做是为了让您不需要引用全局商店对象或无休止地向DOM传递数据。

这有一个很大的优势:存储状态与DOM无关。您可以在页面上的任何位置放置任何两个元素,并为它们提供您想要从商店获得的任何数据。如果您有一个客户搜索表单和一个客户搜索结果列表......这些表示元素的关系不会影响他们对数据的访问。

据我所知,Apollo-react的ApolloProvider不赞成这个原则。当我使用graphql使用查询包装组件时,该查询的结果将作为包装提供给包装组件。如果应用程序中的其他位置需要这些结果,则必须手动传递或存储在全局引用中。特别是,从graphql查询返回的props不能传递给DOM。

有没有办法制作ApolloProvider"提供"以与redux的提供商相同的方式向应用程序的其余部分查询结果?我是否需要自己构建此功能?或者,更好的是,我误解了什么吗?

1 个答案:

答案 0 :(得分:1)

Apollo使用Redux来缓存graphql查询结果。基本上,如果您有多个需要相同数据的组件,只需使用Apollo使用相同的graphql查询来包装每个组件。您甚至可以将graphql连接器定义一次,并使用相同的连接器来包装N个组件。