Nat*_*anL 5 reactjs graphql react-apollo graphql-subscriptions apollo-client
我有一个订阅,比方说postIsRead,它表示当前正在阅读的帖子列表中的帖子,例如:
帖子:{id:1,阅读:true}
...管他呢。一次只能阅读一篇文章。无论如何,这是通过subscribeToMore在订阅上的updateQuery。
updateQuery: (prev, { subscriptionData }) => {
if (!subscriptionData.data) return prev;
let posts = [...prev.posts];
posts.forEach((f)=> {
f.id === subscriptionData.data.postIsRead.id
? f.read = subscriptionData.data.getPosts.read
: f.read = false
});
return Object.assign({}, prev, {
getPosts: posts
});
}
Run Code Online (Sandbox Code Playgroud)
现在有两个问题:帖子的状态不会立即传播,例如在渲染帖子时,在多个帖子上读取=== true。它似乎滞后了,好像是在延迟加载之类的。我不确定这是React问题还是Apollo问题。
在对此进行故障排除时,它甚至变得更奇怪。我注释掉了updateQuery函数中的所有代码,使得:
updateQuery: (prev, { subscriptionData }) => {}
Run Code Online (Sandbox Code Playgroud)
...将订阅值更新为:true。我似乎误解了它是如何工作的,因为即使函数未返回任何内容,它也在传播更改。但是,如果我完全删除updateQuery,则不会发生更改。
具体来说(为了赏金),我试图了解在订阅更新时提出更改的最佳方法。
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |