使用 apollo Query 传递 Apollo Client 缓存数据

Passing Apollo Client cache data with apollo Query

我有两个问题:

const GET_FILTERS = gql`
  query getFilters {
    filters @client {
      id
      title
      selected
    }
  }
`

const GET_POSTS = gql`
  query getPosts {
    posts {
      id
      author
      status
    }
  }
`

第一个使用 apollo-link-state 从本地状态获取数据,第二个是外部调用。

我有一个 HOC 用于获取帖子设置如下:

const withPosts = (Component) => (props) => (
  <Query
    query={GET_POSTS}  
  >
    {({loading, data, error})} => {
      if(loading) return null
      if(error) return null
      return <Component {...data} {...props}/>
    }}
  </Query>
)

帖子的获取很好,但我想做的是在每次调用 GET_POSTS 查询时添加从 GET_FILTERS 查询返回的任何内容?

我能做的一件事是将 withPost 包装到另一个中,比如说 withFilters HOC,并将结果作为变量传递给 GET_POSTS 查询,但我一直想知道如果有任何其他方法可以通过某种上下文访问该数据,例如 cache.readQuery 仅使用 withPost HOC.

A​​pollo 有 'native' 工具用于 HOC pattern, you can compose 许多(命名的)查询和修改以增强组件。恕我直言,它比使用 query/mutaions 组件更具可读性和功能。

您可以通过 data.fetchMore 将查询(过滤)值作为变量传递 - 当然您可以使用 'inner query'.

的查询组件

不需要直接使用缓存,可以使用查询 'cache-first' fetchPolicy 选项。