【发布时间】:2020-04-13 18:07:43
【问题描述】:
我有一种情况需要获取,例如安装组件时用户发布的所有文章。要获取用户的文章,我使用以下查询:
const GET_USER_ARTICLES = gql`
query getUserArticles($id: ID, $numArticles: Int!, $cursor: String) {
user(id: $id) {
id
articles(first: $numArticles, after: $cursor, orderBy: "-created", state: "enabled") @connection(key: "userArticles") {
edges {
node {
name
}
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
`;
如果有下一页,我想继续获取更多文章,直到我拥有所有文章。到目前为止,我还没有需要做这样的事情(通常我有一个按钮,用户可以点击“加载更多”来获取更多文章,但现在需要在没有用户与任何东西交互的情况下获取所有内容),所以我不确定最好的方法是什么。
React 中的查询示例:
const PAGE_SIZE = 10;
const { data, loading, fetchMore } = useQuery<UserArticlesData, UserArticlesVariables>(
GET_USER_ARTICLES,
{ variables: { id: userId, numArticles: PAGE_SIZE, cursor: null } },
);
我有点迷失如何使用fetchMore 继续获取直到没有更多页面,同时还向用户显示加载状态。我也不确定这是否是解决此问题的最佳方式,因此欢迎提出任何建议!
【问题讨论】:
标签: reactjs graphql apollo react-apollo apollo-client