我有两个查询:
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
换成另一个,假设withFilters
HOC,然后将结果作为变量传递给GET_POSTS
查询,但我一直在想是通过某种上下文访问数据的任何其他方式,例如仅使用cache.readQuery
HOC访问withPost
。
答案 0 :(得分:1)
Apollo为HOC pattern提供了“本机”工具,您可以compose许多(命名)查询和变异来增强组件。恕我直言,它比使用查询/诱变组件更具可读性和功能。
您可以通过data.fetchMore将查询的(过滤器)值作为变量传递-当然,您可以将查询组件用于“内部查询”。
在可以使用查询'cache-first' fetchPolicy选项时,不需要直接使用缓存。