微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 ApolloClient 将变量传递给 GraphQL 突变似乎不起作用

如何解决使用 ApolloClient 将变量传递给 GraphQL 突变似乎不起作用

我正在尝试弄清楚如何使用 Apollo Client 运行突变。

这是我试图运行的突变:

export const CREATE_POST = gql`
    mutation CreatePost($title: String) {
      createPost(
        title: $title
        body: "Test body,whatever..."
      ) {
        title
        body
        slug
      }
    }
`

这是呈现表单的功能组件,并在我提交表单后尝试运行此更改:

export default function post() {
  const [createPost] = useMutation(CREATE_POST)

  async function handleSubmit(event) {
    event.preventDefault()
    const { data } = await createPost({
      variables: { title: "test title" }
    })
  }

  return (<rendering the form here>)
}

我收到一个错误

[GraphQL 错误]:消息:类型为“String”的变量“$title”用于期望类型为“String!”的位置。

如果我从这里删除 $title 变量:mutation CreatePost($title: String) {错误就会消失。似乎我没有将变量传递给它。但据我所知,这部分代码是正确的:

    const { data } = await createPost({
      variables: { title: "test title" }
    })

这就是你应该如何将变量传递给突变,对吗?我究竟做错了什么?我该如何调试?

组件的完整代码here

查询代码here

解决方法

感谢@xadm 解决了这个问题。

必须使用 mutation CreatePost($title: String!) 而不是 mutation CreatePost($title: String)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。