我已经在互联网上搜索了有关此问题的解决方案,但还没有遇到过。我正在创建一个新帖子并将其添加到 Apollo 根查询缓存中。出于某种原因,即使newData使用新查询返回一个新对象,它也不会分配给缓存。
const [createPost, { error }] = useMutation(CREATE_POST_MUTATION, {
variables: values,
update(proxy, result) {
const data = proxy.readQuery({
query: FETCH_POSTS_QUERY,
});
let newData = [...data.getPosts];
newData = [result.data.createPost, ...newData];
proxy.writeQuery({ query: FETCH_POSTS_QUERY, data: newData });
values.body = '';
},
});
Run Code Online (Sandbox Code Playgroud)
Tim*_*nov 13
在发布了这个问题之后,我想通了。查看 apollo writeQuery 文档,我注意到您必须制作每个状态的副本。
const [createPost, { error }] = useMutation(CREATE_POST_MUTATION, {
variables: values,
update(proxy, result) {
const data = proxy.readQuery({
query: FETCH_POSTS_QUERY,
});
let newData = [...data.getPosts];
newData = [result.data.createPost, ...newData];
proxy.writeQuery({
query: FETCH_POSTS_QUERY,
data: {
...data,
getPosts: {
newData,
},
},
});
values.body = '';
},
});
Run Code Online (Sandbox Code Playgroud)
小智 7
你可以这样做 :
const [createPost, { error }] = useMutation(CREATE_POST, {
variables: formValues,
update(proxy, result) {
const data = proxy.readQuery({
query: FETCH_POSTS_QUERY,
});
proxy.writeQuery({
query: FETCH_POSTS_QUERY,
data: {
getPosts: [result.data.createPost, ...data.getPosts],
},
});
formValues.body = "";
},
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
998 次 |
| 最近记录: |