Javascript 阿波罗-未捕获(承诺中)错误:网络错误:无法读取属性';种类';未定义的
我正在使用GraphQL和Apollo编写一个简单的登录表单。每次用户登录后,它都会重新提取查询以获取用户数据Javascript 阿波罗-未捕获(承诺中)错误:网络错误:无法读取属性';种类';未定义的,javascript,reactjs,graphql,apollo,react-apollo,Javascript,Reactjs,Graphql,Apollo,React Apollo,我正在使用GraphQL和Apollo编写一个简单的登录表单。每次用户登录后,它都会重新提取查询以获取用户数据 import React, {Component} from 'react' import AuthForm from './AuthForm' import loginMutation from '../mutations/Login' import { graphql } from 'react-apollo' import userQuery from '../queries/C
import React, {Component} from 'react'
import AuthForm from './AuthForm'
import loginMutation from '../mutations/Login'
import { graphql } from 'react-apollo'
import userQuery from '../queries/CurrentUser'
//App.js
...
const networkInterface = createNetworkInterface({
uri: '/graphql',
opts: {
credentials: 'same-origin',
}
})
const client = new ApolloClient({
dataIdFromObject: o => o.id,
networkInterface
})
...
//Login.js
class LoginForm extends Component {
onSubmit({ email, password }) {
this.props.mutate({
variables: { email, password },
refetchQueries: [{ userQuery, varibles: null }]
})
}
render() {
return (
<div>
<h3>Login</h3>
<AuthForm onSubmit={ this.onSubmit.bind(this) }/>
</div>
)
}
}
export default graphql(loginMutation)(LoginForm)
//userQuery.js
import gql from 'graphql-tag'
export default gql`
{
user{
id
email
}
}
`
import React,{Component}来自“React”
从“/AuthForm”导入AuthForm
从“../mutations/Login”导入LoginMutate
从'react apollo'导入{graphql}
从“../queries/CurrentUser”导入userQuery
//App.js
...
const networkInterface=createNetworkInterface({
uri:“/graphql”,
选择:{
凭据:“相同来源”,
}
})
const客户端=新客户端({
dataIdFromObject:o=>o.id,
网络接口
})
...
//Login.js
类LoginForm扩展组件{
onSubmit({电子邮件,密码}){
这个。道具。变异({
变量:{email,password},
refetchQueries:[{userQuery,varibles:null}]
})
}
render(){
返回(
登录
)
}
}
导出默认图形QL(LoginMutate)(LoginForm)
//userQuery.js
从“graphql标记”导入gql
导出默认gql`
{
使用者{
身份证件
电子邮件
}
}
`
问题是用户可以登录,但用户查询没有被重新提取。相反,我一直收到以下错误消息:
Uncaught(in-promise)错误:网络错误:无法读取属性'kind'的未定义错误(bundle.js:6231)
。
我找不到这个问题的原因。有人能帮我解决这个问题吗
refetchQueries: [{ userQuery, varibles: null }]
在refetchquerys
属性的数组中,您有一个对象userQuery
,您正在解构该对象,解构时该对象将是{userQuery:userQuery}
。Apollo客户端无法识别此属性,它应该是{query:userQuery}
。变量:null
中也存在拼写错误。它应该是变量:null
更正代码:
onSubmit({ email, password }) {
this.props.mutate({
variables: { email, password },
refetchQueries: [{ query: userQuery, variables: null }]
})
}