0

使用一个使用假 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();                 
        }
      }    
})
 
4

0 回答 0