我正在尝试从阿波罗服务器重新获取数据,但无法使其正常工作。 我做了两个突变,并将它们推入阵列。 然后,我想在他们结束时,获取数据并重新填充图形。
Promise.all(promises)
.then(result => {
console.log(result)
console.log(id)
return getGraph({
variables: {
id: id
},
fetchPolicy: 'network-only'
});
})
.catch();
我可以看到它记录了结果和正确的ID。还更改为仅网络,因此它不会在缓存中查找。 关于可能出什么问题的任何建议吗?
Br
答案 0 :(得分:1)
我假设getGraph
是提取程序-useLazyQuery
返回的回调。
不幸的是,它不会返回Promise
,而是返回void
(根据Apollo docs)。 GitHub上有existing issue,但我不确定是否会实现。
请参阅,对于钩子,在每个渲染器上返回一些数据更为自然。在一个渲染中,您有一些标志isLoading = true
,在下一个渲染中,您得到了isLoading = false
和一些非空的data
。如果引入Promise
,无论组件的呈现周期如何,都可以解决或拒绝该问题,那么事情就会变得非常混乱。
如果您不喜欢这种方法(或者确实需要与其他注释同步一些查询),则可以在通过query
访问的client
上运行ApolloConsumer
。
[UPD]正如@Jedi Schmedi在评论中所写,fetcher实际上返回Promise
,但在^3.1.2
的较新版本(apollo
)中。因此,这可能是一种解决方法,尽管我不确定该API是否稳定并且可以更改,或者文档是否具有误导性。