使用Relay useMutation钩子时提示Mutation类型未知discussion字段报错
问题原因
你编写的Mutation查询结构与本地schema.graphql中定义的Mutation类型字段不匹配,你在查询中直接从Mutation根节点取discussion字段,但该字段在Mutation类型中并不存在。你用到的createDiscussion是典型的GraphQL输入型mutation结构,需要先调用根节点的createDiscussion字段,再从它的返回值中获取discussion数据。
修复方案
找到SomeButton组件内的mutation定义,修改为如下内容:
const [commit, isInFlight] = useMutation(graphql` mutation AppCreateDiscussionMutation($input: CreateDiscussionInput!) { createDiscussion(input: $input) { discussion { id } } } `);
额外检查项
- 确认本地
schema.graphql已经和你对接的上游GraphQL API结构同步,如果你用的是GitHub GraphQL API,需要拉取最新的schema覆盖本地文件,避免本地schema结构滞后导致编译校验失败。 - 可以打开
schema.graphql文件搜索type Mutation定义,确认其中存在createDiscussion字段,且该字段的返回类型包含discussion子字段。
修改完成后重新执行yarn run relay-compiler --src ./src --schema ./schema.graphql即可完成编译。
内容的提问来源于stack exchange,提问作者Sourouche
相关产品推荐
相关产品推荐

