使用GraphQL和Apollo的新功能。试图使一个简单的Mutation组件起作用。我从两个输入中删除了值,并试图将它们传递给一个突变函数,但收到以下控制台错误:
ApolloError.js:58 Uncaught (in promise) Error: GraphQL error: Variable name of type String! was provided invalid value
GraphQL错误:字符串类型的变量姓!被提供了无效的值
我在提交表单时触发了突变功能。以下是我的组件的代码:
import React from 'react'
import { Mutation } from 'react-apollo'
import gql from 'graphql-tag'
const ADD_PERSON_MUTATION = gql`
mutation createPerson($name: String!, $surname: String!) {
createPerson(name: $name, surname: $surname) {
id
name
surname
}
}
`
export default function CreatePerson () {
let nameInput, surnameInput;
return (
<Mutation mutation={ADD_PERSON_MUTATION}>
{(createPerson, {data}) => (
<form
onSubmit={(e) => {
e.preventDefault()
createPerson({variables: { name: nameInput.value, surname: surnameInput.value }})
nameInput = ""
surnameInput = ""
}}
>
<input
ref={node => {
nameInput = node;
}}
/>
<input
ref={node => {
surnameInput = node;
}}
/>
<button type="submit">Submit</button>
</form>
)}
</Mutation>
)
}
我尝试将其愚弄,不使用变量,而是将伪字符串提交到createPerson函数中-同样的错误。还尝试将其重构为有状态组件,并将变量作为prop传递给Mutation组件-仍然是相同的错误。
请,我希望对我做错的事情提供一些指导。