运行 Apollo 仅在 React 组件挂载时查询(没有 queryData 和生命周期)

Run Apollo query only on React component mount (without queryData and lifecycle)

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

我只想在组件挂载上执行查询,因此更改此组件子路由不会重新触发查询。我也真的很想保留容器模式,我在容器中声明我的查询,包装我的组件并忘记它,这样我的组件本身就不会受到任何 Apollo 的影响。 到目前为止,我已经能够通过制作我自己的 Apollo 高阶组件来做到这一点,该组件采用组件、查询及其选项和 returns 一个将自动 运行 queryData on componentDidMount 的新组件. Here's the code。然后我这样使用它:apolloQueryHOC(MyComponent, queryOptions);

但是我已经开始在一个新组件上实现分页,而且这种方法对于我已经实现的复杂分页逻辑来说并没有 work/becomes 太难看。问题是,当我使用基本的 Apollo 容器方法时,它就像一个魅力。但它 运行 每次 route/prop 更改。

所以我的问题是,除了使用 withApollo 之类的方法之外,是否有办法 运行 只在挂载时进行 "container" 查询?

啊,问题实际上是我在中间件中处理身份验证,所以我的查询将“”作为令牌,令牌是从 indexedDB 中获取并添加到中间件中的查询,覆盖“”。 所以存储在 Apollo store 中的查询结果(以正确的 token 作为参数)永远不会匹配以 '' 作为 token 的查询,导致 Apollo 一次又一次地从服务器查询。