【问题标题】:How to pass multiple queries into refetchQueries in apollo/graphql如何将多个查询传递给 apollo/graphql 中的 refetchQueries
【发布时间】:2018-08-16 03:57:48
【问题描述】:

我有一个名为 deleteSong 的突变。我想知道突变通过后如何将多个查询传递给refetchQueries

 this.props
  .deleteSong({
    variables: { id },
    refetchQueries: [{ query: fetchSongs }] //<-- I only know how to pass 1 query
  })
  .then(() => {})
  .catch(err => {
    this.setState({ err });
 });

【问题讨论】:

  • 它是一个数组,没有理由你不能传递多个:refetchQueries: [{ query: fetchSongs }, {query: fetchStuff}, {query: etc}]
  • “使用 refetchQueries,您可以指定 一个或多个查询,您希望在突变完成后运行这些查询”github.com/apollographql/apollo-client/blob/master/docs/source/…
  • @Ben 你测试过这个吗?我在我的手机自动取款机上,直到稍后才能测试。虽然如此,但如果你已经测试过,请将其作为答案,以便我给你信用。
  • 我没有经历过那么多阿波罗,但是看看你的例子和文档,它看起来很明显(你传递了一个哈希数组)

标签: reactjs graphql apollo react-apollo apollo-client


【解决方案1】:

Apollo 客户端文档对 refetchQueries 进行了如下说明:一个允许您指定在发生突变后要重新获取哪些查询的函数。因此,您应该可以将单个或多个查询传递给refetchQueries()

基本上应该是:

 this.props
  .deleteSong({
    variables: { id },
    refetchQueries: [{ query: FETCH_SONGS }, { query: FETCH_FOLLOWERS }]
  })
  .then(() => {})
  .catch(err => {
    this.setState({ err });
 });

FETCH_SONGFETCH_FOLLOWERS 应该由graphql-tag 定义。也许让其他人知道此解决方案是否适合您。

【讨论】:

    猜你喜欢
    • 2019-04-02
    • 2020-11-12
    • 2018-01-27
    • 1970-01-01
    • 2018-03-08
    • 2022-11-02
    • 2018-06-03
    • 2018-10-09
    • 2020-02-14
    相关资源
    最近更新 更多