可以通过使用fetchMore或updateQuery方法来代替refetchQueries,以避免多次触发refetchQueries方法。以下是相应的代码示例:
// 使用 fetchMore 方法
this.props.data.fetchMore({
variables: { offset: newOffset },
updateQuery: (prev, { fetchMoreResult }) => {
if (!fetchMoreResult) return prev;
return Object.assign({}, prev, {
posts: [...prev.posts, ...fetchMoreResult.posts]
});
}
});
// 使用 updateQuery 方法
this.props.mutate({
variables: { input: newPost },
update: (store, { data: { createPost } }) => {
const data = store.readQuery({
query: ALL_POSTS_QUERY,
variables: { offset: 0, limit: 10 }
});
data.posts.unshift(createPost);
store.writeQuery({
query: ALL_POSTS_QUERY,
variables: { offset: 0, limit: 10 },
data
});
}
});