0

我有两个疑问:

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_FILTERS每次调用查询时添加从查询返回的任何内容GET_POSTS

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

4

1 回答 1

1

Apollo 具有HOC 模式的“本机”工具,您可以编写许多(命名的)查询和突变来增强组件。恕我直言,它比使用查询/突变组件更具可读性和功能性。

您可以通过data.fetchMore将查询(过滤器)值作为变量传递- 当然您可以将查询组件用于“内部查询”。

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

于 2018-10-19T21:53:01.373 回答