react-apollo-hooks 中的 useMutation 没有传递变量

Posted

技术标签:

【中文标题】react-apollo-hooks 中的 useMutation 没有传递变量【英文标题】:useMutation from react-apollo-hooks is not passing variables 【发布时间】:2019-10-03 04:53:49 【问题描述】:

我正在将我的代码从 apollo-boost 重构为 react-apollo-hooks,但我不断收到以下错误:

Variable "$email" of required type "String!" was not provided
Variable "$password" of required type "String!" was not provided

我的重构代码如下:

const [email, setEmail] = useState('')
const [password, setPassword] = useState('')
const variables = 
    data:  email, password 

const login = useMutation(LOGIN_MUTATION, 
    variables
)

const onSubmitHandler = async (login, e) => 
    e.preventDefault()
    const authResults = await login()
    localStorage.setItem(AUTH_TOKEN, authResults.data.login.token);
    props.history.push('/') 

graphql 突变

const LOGIN_MUTATION = gql`
  mutation Login($email: String!, $password: String!) 
    login(data: 
        email: $email, password: $password
        
    )
      token
      user 
        id
      
    
  
`

我的架构

login(data: LoginUserInput!): AuthPayload!

console.logging 电子邮件和密码变量表明它们已正确传递给useMutation

【问题讨论】:

【参考方案1】:

您的文档中有两个变量——emailpassword。您实际上传递给useMutation 的是一个名为data 的变量,它不存在。

const variables =  email, password 

【讨论】:

以上是关于react-apollo-hooks 中的 useMutation 没有传递变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 react-apollo-hooks 和 formik 中使用突变?

使用`react-apollo-hooks`和`useSubscription`钩子时如何避免“自动更新”缓存

将参数传递给 react-apollo-hooks useQuery

React-Apollo-Hooks 使用Mutation 传递空变量?

仅在第一次以惯用方式和优雅方式呈现组件时执行 react-apollo-hooks useQuery

Apollo:组件重新渲染之间的加载状态