useLazyQuery 未在 Promise all 中触发
useLazyQuery not firing in Promise all
我正在尝试从 apollo 服务器重新获取数据,但无法正常工作。
我做了两个突变并将它们推入一个数组。
然后我想,当他们发现时,获取数据并重新填充图表。
Promise.all(promises)
.then(result => {
console.log(result)
console.log(id)
return getGraph({
variables: {
id: id
},
fetchPolicy: 'network-only'
});
})
.catch();
我可以看到它记录了结果和正确的 ID。也更改为仅网络,因此它不会在缓存中查找。
关于可能出现的问题有什么建议吗?
Br
我假设 getGraph
是提取器 - 回调 return 由 useLazyQuery
编辑。
不幸的是,它不是 return Promise
,而是 returns void
(根据 Github 中的 Apollo docs). There is existing issue,但我'我不确定是否会实施。
看,对于钩子来说,return 在每个渲染器上添加一些数据更为自然。在一个渲染中,您有一些标志 isLoading = true
,在下一个渲染中,您将获得 isLoading = false
和一些非空 data
。如果您引入 Promise
可以解决或拒绝而不管组件的渲染周期,事情就会变得非常混乱。
如果您不喜欢这种方法(或者确实需要将某些查询与另一个查询同步)作为解决方法,您可以 运行 query
on client
accessed through ApolloConsumer
。
[UPD] 正如@Jedi Schmedi 在评论中所写,fetcher 实际上是 returns Promise
但在 apollo
的更新版本 (^3.1.2
) 中。所以这可能是一种解决方法,尽管我不确定 API 是否不稳定并且可以更改或者文档是否具有误导性。
我正在尝试从 apollo 服务器重新获取数据,但无法正常工作。 我做了两个突变并将它们推入一个数组。 然后我想,当他们发现时,获取数据并重新填充图表。
Promise.all(promises)
.then(result => {
console.log(result)
console.log(id)
return getGraph({
variables: {
id: id
},
fetchPolicy: 'network-only'
});
})
.catch();
我可以看到它记录了结果和正确的 ID。也更改为仅网络,因此它不会在缓存中查找。 关于可能出现的问题有什么建议吗?
Br
我假设 getGraph
是提取器 - 回调 return 由 useLazyQuery
编辑。
不幸的是,它不是 return Promise
,而是 returns void
(根据 Github 中的 Apollo docs). There is existing issue,但我'我不确定是否会实施。
看,对于钩子来说,return 在每个渲染器上添加一些数据更为自然。在一个渲染中,您有一些标志 isLoading = true
,在下一个渲染中,您将获得 isLoading = false
和一些非空 data
。如果您引入 Promise
可以解决或拒绝而不管组件的渲染周期,事情就会变得非常混乱。
如果您不喜欢这种方法(或者确实需要将某些查询与另一个查询同步)作为解决方法,您可以 运行 query
on client
accessed through ApolloConsumer
。
[UPD] 正如@Jedi Schmedi 在评论中所写,fetcher 实际上是 returns Promise
但在 apollo
的更新版本 (^3.1.2
) 中。所以这可能是一种解决方法,尽管我不确定 API 是否不稳定并且可以更改或者文档是否具有误导性。