[英]How to update cache after GraphQL mutation?
您好,我想在對 API 的網絡請求發生變異后更新我的本地緩存。 這是我的阿波羅查詢:
const CREATE_POST = gql`
mutation createPost($title: String!, $body: String!, $userId: Int!) {
createPost(title: $title, body: $body, userId: $userId) {
title
body
userId
}
}
`;
const [createPost] = useMutation(CREATE_POST);
const variables = { title, body, userId: numbered };
console.log('variables', variables);
createPost({
variables,
update(cache) {
const results = cache.readQuery({ query: GET_POSTS });
console.log(results);
// cache.writeQuery({
// query: GET_POSTS,
// data: {
// posts: [...posts, variables],
// },
// });
},
});
我可以在數據庫中創建一個 Post,但是我還想在發出突變請求后更新我的本地 Apollo 緩存,但是當我在此處記錄結果時,我什么也沒有得到。
我是否在正確插入數據庫后實現本地緩存更新?
同樣在我的 inMemoryCache 設置的 typePolicies 中,我有深度合並
typePolicies: {
Query: {
fields: {
posts: {
keyArgs: ['limit'],
merge: (existing, incoming) => {
console.log('existing', existing);
console.log('incoming', incoming);
const result = [...(existing || []), ...incoming];
return result;
},
},
},
},
你應該使用refetch();
官方文檔-refetch
const onSubmit = () => {
const variables = { title, body, userId: numbered };
console.log('variables', variables);
createPost({
variables,
update(cache) {
const results = cache.readQuery({ query: GET_POSTS });
console.log(results);
// cache.writeQuery({
// query: GET_POSTS,
// data: {
// posts: [...posts, variables],
// },
// });
},
});
refetch();
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.