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