Apollo React subscribeToMore 不更新数据
Posted
技术标签:
【中文标题】Apollo React subscribeToMore 不更新数据【英文标题】:Apollo React subscribeToMore doesn't update data 【发布时间】: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 你是如何解决这个问题的?我有完全相同的问题 - 除了一个视图之外,该解决方案在任何地方都适用...... 【参考方案1】:你在使用分页吗?
我遇到了类似的问题,我正在从聊天中获取最后 20 条消息,然后尝试通过 websockets 进行更新。问题是我正在制作一个 20 项数组 => 21 项数组。
当我删除第一条消息并添加到数组的末尾(所以我保留了原始长度)时,它开始起作用了!
【讨论】:
以上是关于Apollo React subscribeToMore 不更新数据的主要内容,如果未能解决你的问题,请参考以下文章
找不到模块:无法解析“apollo-link-context”-REACT,APOLLO-SERVER
使用 `react-apollo-hooks` 和 `useSubscription` 钩子