Решил эту проблему, обнаружив, что useLazyQuery
предоставляет client
, который я могу использовать для обновления кеша вручную.
const [getPosts, { data, loading, error, fetchMore, client }] = useLazyQuery(GET_ALL_POSTS, {
onCompleted: (data) => updateCache({ client, data }),
});
function updateCache({ client, data }: any) {
client.writeQuery({
query: GET_ALL_POSTS,
data: {
...data,
post: {
...data.post,
getFeedPosts: {
...data.getFeedPosts,
edges: [...data.post.getFeedPosts.edges],
totalCount: data.post.getFeedPosts.totalCount,
__typename: data.post.getFeedPosts.__typename,
},
__typename: data.post.__typename,
},
},
});
}