使用一个使用假 id乐观地创建一个新对象的突变,在以下行中:
addNote({
variables: { noteText },
optimisticResponse: {
addNote: {
id: '-1', // dummy value
__typename: 'Note',
},
},
update: (store, response) => {
store.writeQuery({
//...
})
}
})
如果我们也有相应的deleteNote()
突变,也是乐观的,那么处理在服务器对 addNote 的响应返回之前触发的删除的最佳实践是什么,因此客户端中唯一可传递给 deleteNote 的 id 是乐观的临时的id: '-1'
?
当我向添加/删除按钮发送垃圾邮件时,我当前的实现有点混乱。
编辑:我的服务器不返回删除的对象,只是成功/失败,我不知道这是否重要。
deleteNote({
variables: { noteId },
optimisticResponse: { successfullyDeleted: true },
update: (store, response) => {
if (response.data?.successfullyDeleted) {
const normalizedId = store.identify({ id: noteId , __typename: 'Note' })
store.evict({ id: normalizedId });
store.gc();
}
}
})