使用 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.
Apollo 有 'native' 工具用于 HOC pattern, you can compose 许多(命名的)查询和修改以增强组件。恕我直言,它比使用 query/mutaions 组件更具可读性和功能。
您可以通过 data.fetchMore 将查询(过滤)值作为变量传递 - 当然您可以使用 'inner query'.
的查询组件
不需要直接使用缓存,可以使用查询 'cache-first' fetchPolicy 选项。
我有两个问题:
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.
Apollo 有 'native' 工具用于 HOC pattern, you can compose 许多(命名的)查询和修改以增强组件。恕我直言,它比使用 query/mutaions 组件更具可读性和功能。
您可以通过 data.fetchMore 将查询(过滤)值作为变量传递 - 当然您可以使用 'inner query'.
的查询组件不需要直接使用缓存,可以使用查询 'cache-first' fetchPolicy 选项。