Redux的Provider组件和connect函数通过mapStateToProps向封装的组件提供了对商店状态的引用。正如可爱的文章How to Build a Redux中所提到的,这样做的目的是不需要引用全局存储对象或将数据无休止地传递到DOM。
这有一个很大的优点:存储状态是DOM不可知的。您可以将任意两个元素放在页面上的任何位置,并为它们提供所需的来自存储的任何数据。如果您有一个用于客户搜索的表单和客户搜索结果列表...这些表示元素之间的关系不会影响它们对数据的访问。
据我所知,阿波罗-react的ApolloProvider不支持这一原则。当我使用graphql使用查询包装一个组件时,该查询的结果将作为道具提供给包装的组件。如果应用程序中的其他地方需要这些结果,则必须手动传递或存储在全局引用中。特别是,从graphql查询返回的属性不能向上传递到DOM。
有没有办法让ApolloProvider像redux的提供者那样向应用程序的其余部分“提供”查询结果?我需要自己构建这个功能吗?或者,更好的是,我误解了什么?
发布于 2017-07-08 05:10:04
Apollo使用Redux缓存graphql查询结果。基本上,如果您有多个组件需要相同的数据,只需使用Apollo将每个组件包装成相同的graphql查询即可。您甚至可以只定义一次graphql连接器,并使用相同的连接器包装N个组件。
https://stackoverflow.com/questions/44979622
复制相似问题