问题描述
我正在尝试弄清楚如何使用 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" }
})
这就是你应该如何将变量传递给突变,对吗?我究竟做错了什么?我该如何调试?
解决方法
感谢@xadm 解决了这个问题。
必须使用 mutation CreatePost($title: String!)
而不是 mutation CreatePost($title: String)
。