以下内容适用于查询缓存中除最后一项以外的所有项。
如果以下代码中的postIndex
恰好是Apollo缓存数组中的最后一项,那么writeQuery
会运行,不会引发错误,但实际上不会更新缓存。
const upsertIntoApolloCache = (upsertParams) => {
const data = client.readQuery({
query: USER_POSTS_QUERY,
});
const currentUserPosts = data.currentUser.posts;
const postIndex = currentUserPosts.findIndex(post =>
post.id === upsertParams.Id
);
if (postIndex === -1) {
currentUserPosts.push(upsertParams);
} else {
currentUserPosts[postIndex] = upsertParams;
}
client.writeQuery({
query: USER_POSTS_QUERY,
data,
});
};
我丢失了某些东西还是遇到了错误?
如何写入Apollo缓存中的最后一项?