Angular Apollo 使用突变

问题描述 投票:0回答:2

我正在与 Apollo 合作开发一个 Angular 项目 “queryAccounts”返回的数据也作为此突变的一部分运行?

似乎有一种方法可以在反应中做到这一点,但我是

html
2个回答
2
投票

你提到有一些方法可以在反应中做到这一点,但我认为这不是真的。

让我解释一下 Apollo 中的突变是如何工作的。

  1. 您使用
    apollo.mutate()
    选项运行
    refetchQueries
  2. 当您订阅它时,会发出 HTTP 请求(在大多数情况下,有时是 WS 或其他传输层)
  3. Apollo 收到服务器的响应。
  4. 更新商店。
  5. 您订阅的 Observable 会发出结果(您的
    console.log(data)
  6. 接下来,
    refetchQueries
    中指定的每个查询都会启动一个新的 HTTP 请求并针对服务器运行。
  7. Apollo 会根据每个回复更新商店。
  8. 监听这些查询的组件会获取更新的结果

我在文档中对此进行了解释:https://www.apollographql.com/docs/angular/features/cache-updates.html#after-mutations

基本上,refetchQueries 并不是获取或访问数据。


2
投票

您可以拥有一个在重新获取时始终更新的 watchQuery

this.apollo.watchQuery({
            query: query,
            variables: variables
        })
        .valueChanges
        .pipe(
            map(res => res.data)
        )
        .subscribe(data => {
            //Updated your data here
        }, err => {

        })
       })
© www.soinside.com 2019 - 2024. All rights reserved.