通常可以使用以下方法为具有单一定义的查询创建 Relay query 对象:

const relayQuery = Relay.QL `
  query UserRoute($id_0: ID!) {
    user(id:$id_0) {
      id,
      name,
      email
    }
  }
;

我从通过网络发送的查询字符串中截获了查询字符串。它们通常有多个定义(例如查询、片段、突变、订阅)。我想为该类型的查询创建一个 Relay query object。以下代码抛出错误:
Relay transform error "You supplied a GraphQL document named 'network' with 2 definitions, but it must have exactly one definition." in file '/Users/ankitshah/lyearnapp/src/network.js'. Try updating your GraphQL schema if an argument/field/type was recently added.
对于此代码:
const relayQuery = Relay.QL `
  query UserRoute($id_0: ID!) {
    user(id:$id_0) {
      id,
      ...F0
    }
  }
  fragment F0 on User {
    id,
    name,
    email
  }
;

我想要这个是因为我想使用 Relay.Store.getStoreData().updateQueryPayload(queryObject, payload) 函数更新 Relay Store。任何帮助表示赞赏。

最佳答案

我遇到了同样的错误。您需要将查询压缩为没有片段,如下所示:

const relayQuery = Relay.QL `
  query UserRoute($id_0: ID!) {
    user(id:$id_0) {
      id,
      name,
      email
    }
  }
;

然后它起作用了。

关于reactjs - 为具有多个定义的查询更新中继存储,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38236178/

10-12 16:26
查看更多