【发布时间】:2019-12-29 14:41:29
【问题描述】:
我遇到了一个问题,即特定 subscribeToMore 函数未正确更新查询数据。 subscribeToMore 函数正确接收新的订阅数据,但它不更新查询。
updateQuery: (prev, { subscriptionData }) => {
if (!subscriptionData.data) return prev;
let tabFields = [subscriptionData.data.fieldCreated, ...prev.tabFields];
return Object.assign({}, prev, {
tabFields
});
}
如果我 console.log prev 和 Object.assign 函数,我得到:
{tabFields: Array(x)} 和 {tabFields: Array(x+1)} 分别。这向我表明返回数据的格式是正确的。然而组件并没有重新渲染,这样......
subscribeToNew(subscribeToMore);
console.log(data.tabFields);
return renderFields(data.tabFields);
...订阅发生时不会重新呈现或记录。
在这一点上我完全被难住了。我还有其他几个使用相同格式的订阅。他们工作得很好。返回响应与先前数据的格式匹配。
【问题讨论】:
-
你能显示 ApolloClient 选项吗
-
成功了。谢谢你。仍然对为什么它适用于其他订阅而不是这个订阅感到困惑。
-
如果你的意思是这个trick:dataIdFromObject: o => o.id,你需要在添加新订阅的mutation返回中添加id。
-
@NathanL 你是怎么解决这个问题的?
-
那么,@NathanL 你是如何解决这个问题的?我有完全相同的问题 - 除了一个视图之外,该解决方案在任何地方都适用......
标签: reactjs graphql apollo react-apollo