我有一个类似这样的用户界面:
Term: selective serotonin reuptake inhibitor
Canonical: --
Aliases:
- SSRI [remove]
Term: SSRI
Canonical: selective serotonin reuptake inhibitor [remove]
Aliases:
--
比方说,我查看了/term/5
并将其放入缓存。然后,我转到/term/10
并单击[remove]
按钮以删除规范。突变会返回不再具有Canonical的术语10,因此UI会正确更新。是的!
接下来,我导航至/term/5
。糟糕,用户界面过时。仍然认为“ SSRI”是一个别名。
我可以使用针对突变的更新功能来处理此问题,从而使它在缓存中无效。像这样:
update(cache, {data}) {
const keyToDelete = Object.keys(cache.data.data).find(key => {
const {id, __typename} = cache.data.data[key];
return __typename === 'Term' && id === data.term.canonical.id;
});
if (keyToDelete) {
cache.data.delete(keyToDelete);
}
}
好像是PITA,但是还可以。
但是,现在让我们说相反的事情:从规范中删除别名。突变返回的是现在没有别名的Term 5,因此将更新Term 5的UI,但是当我转到Term 10时,它仍然具有规范。
在这种情况下,我看不到如何使用update
。我没有访问更新功能中已删除别名的ID,所以找不到要删除的键。
我想这一定是常见的情况。我该如何处理?