阿波罗客户端:2.6.3
react-apollo:2.2.1
因此,我有一个订阅,该订阅根据项目删除请求而触发,但是在进行订阅后不更新UI。
我的订阅代码如下:
<DeleteItem
id={item.id}
urlReferer={urlReferer}
subscribeToDeleteItems={() =>
subscribeToMore({
document: DELETE_ITEM_SUBSCRIPTION,
variables: {},
updateQuery: (prev, { subscriptionData }) => {
if (!subscriptionData.data) return prev;
const deletedItem = subscriptionData.data.itemDeleted;
let newItemList;
console.log("prev = ", prev);
if (isDuplicateItem(deletedItem.id, prev.me.items)) {
newItemList = prev.me.items.filter((item) => {
return deletedItem.id !== item.id;
});
console.log("new item list = ", newItemList);
} else {
return prev;
}
return Object.assign({}, prev, {
ROOT_QUERY: {
me: {
items: [newItemList]
}
}
});
}
})
}
>Delete This Item</DeleteItem>
,生成的输出如下:
ROOT_Query存储区:
我在这里俯瞰什么?如何解决?
答案 0 :(得分:0)
因此,我通过将父查询的fetchPolicy更改为“缓存并网络”并确保ID出现在每个需要标准化结果的查询中来解决此问题,如此处所述:Issue with automatic UI updates in Apollo: `updateQuery` not working properly with `subscribeToMore`