2017-06-14 19 views
2

我在我正在构建的一个相当大的React应用程序中广泛使用Apollo,并且我发现自己几次面临相同的限制。仅在React组件安装上运行Apollo查询(不包含queryData和生命周期)

我想仅在组件安装上执行查询,以便更改此组件子路由将不会重新触发查询。我也非常想保留容器模式,在容器中声明我的查询,包装我的组件并忘记它,以便我的组件本身保持清洁任何Apollo的东西。 到目前为止,我已经能够做到这一点,通过制作我自己的Apollo高阶组件,它接受一个组件,一个查询及其选项,并返回一个新的组件,它将自动在componentDidMount上运行queryData。 Here's the code。然后我以这种方式使用它:apolloQueryHOC(MyComponent, queryOptions);

但是对于一个新组件,我已经开始实现分页,而且这种方法根本不起作用,对于我实现的复杂分页逻辑来说,这种方法太难看了。事情是,当我使用基本的Apollo容器方法时,它就像一个魅力。但它运行在每个路线/道具变化上。

所以我的问题是,有没有办法只运行一个“容器”查询在mount上,除了使用withApollo等?

回答

2

嗯,问题实际上是我在中间件中处理auth,所以我的查询有'作为标记,并且从indexedDB获取标记并将其添加到中间件中的查询中,覆盖''。 因此,存储在Apollo存储中的查询结果(使用适当的标记作为参数)永远不会与具有“'作为标记的查询匹配,导致Apollo一次又一次地从服务器查询。

相关问题