Graphql 仅在React组件装载上运行Apollo查询(无queryData和lifecycle)

Graphql 仅在React组件装载上运行Apollo查询(无queryData和lifecycle),graphql,apollo,react-apollo,apollo-client,apollo-server,Graphql,Apollo,React Apollo,Apollo Client,Apollo Server,我在构建一个相当大的React应用程序时广泛使用Apollo,我发现自己多次面临同样的限制 我只想在组件挂载上执行查询,这样更改组件子路由就不会重新触发查询。我还真的想保留容器模式,在容器中声明查询,包装组件并忘记它,这样组件本身就不会有任何Apollo内容。 到目前为止,我已经能够通过制作我自己的Apollo高阶组件来实现这一点,该组件接受一个组件、一个查询及其选项,并返回一个新组件,该组件将自动在componentDidMount上运行queryData。然后我这样使用它:apolloQue

我在构建一个相当大的React应用程序时广泛使用Apollo,我发现自己多次面临同样的限制

我只想在组件挂载上执行查询,这样更改组件子路由就不会重新触发查询。我还真的想保留容器模式,在容器中声明查询,包装组件并忘记它,这样组件本身就不会有任何Apollo内容。 到目前为止,我已经能够通过制作我自己的Apollo高阶组件来实现这一点,该组件接受一个组件、一个查询及其选项,并返回一个新组件,该组件将自动在componentDidMount上运行queryData。然后我这样使用它:
apolloQueryHOC(MyComponent,queryOptions)

但是在一个新组件上,我已经开始实现分页,这种方法对于我实现的复杂分页逻辑来说根本不起作用/变得太难看了。问题是,当我使用基本的阿波罗容器方法时,它就像一个符咒。但它在每一条路线/道具变化上都会运行


所以我的问题是,除了在Apollo上使用
之类的工具之外,还有没有其他方法只在挂载上运行“container”查询?

啊,问题实际上是我在中间件中处理auth,所以我的查询将“”作为令牌,令牌从indexedDB中获取并添加到中间件中的查询中,覆盖“”。 因此,存储在Apollo store中的查询结果(以适当的令牌作为参数)从未与以“”作为令牌的查询匹配,导致Apollo从服务器一次又一次地查询