如何从React中的Apollo订阅组件刷新查询/缓存

时间:2018-08-15 12:18:36

标签: reactjs graphql apollo react-apollo apollo-client

想象一下这样的组件层次结构:

<Team>
  <Leaderboard />
  <PlayerStats />
</Team>

在排行榜的呈现方法中,我们有一个Apollo / GraphQL Query组件来获取顶级玩家。

我们还有一个 component,它会在获取新的PlayerStat时触发(当前在PlayerStats中-但很高兴将其放置在任何地方)。

在PlayerStat订阅组件触发后,如何将页首横幅查询移至refetchQueries /清除缓存。

谢谢!

1 个答案:

答案 0 :(得分:1)

因此,Apollo Query组件提供了带有React上下文的refetch函数,就像dataloadingerror一样。

<Query query={...} >
  {
    ({ data, loading, error, refetch}) => {
      if (!this.state.refetch) {
        this.setState({ refetch });
      }
      return <RenderData data={data} />;
    }
  }
</Query>

您可以将此refetch函数设置为状态,并在组件收到事件时调用它。