乐观用户界面仅适用于手表查询吗?

时间:2018-08-01 14:45:09

标签: apollo react-apollo apollo-client

开放式UI是否仅适用于watchQuery而不适用于订阅?我们正在Websocket上广泛使用订阅,尽管它似乎可以与watchQuery一起正常工作,但它无法使乐观的UI正常工作。

所以我的问题很简单,我只需要确认乐观的ui应该可以与订阅一起使用?

1 个答案:

答案 0 :(得分:1)

watchQuery用于订阅更新到您的缓存(Apollo通常将其称为“存储”),这与您的服务器不同。请参阅阿波罗documentation上的注释:

  

这将根据指定的选项监视查询的缓存存储,并返回ObservableQuery。当缓存存储发生更改时,我们可以订阅此ObservableQuery并通过GraphQL观察器接收更新的结果。请注意,此方法不是GraphQL订阅的实现。相反,它使用Apollo的商店来对您的查询结果进行反应式更新。

基于服务器的完整实现称为GraphQL订阅。订阅更新是客户端在任意时间收到的内容。当他们来的时候,他们来了。由于无法进行预测,因此订阅中没有用于乐观UI的用例。因此,为什么不支持它们。我能想到的唯一用例是,客户是否正在订阅自己的更改。在这种情况下,您可以使用optimisticResponse和进行更新的Mutation component中的更新选项。