当尝试使用react-native的变量查询时,我在代码中找不到问题。一个简单的Hello World!
正在工作。
渲染器:
render() {
return (
<AppContext.Consumer>
{context => {
const{ userID,employeeID,salonID,currentDay,serviceTime}=context.state
return (
<Query
query={query}
variables={{userID:userID,employeeID:employeeID,salonID:salonID,day:currentDay,serviceTime:serviceTime}}
>
{(response, error) => {
console.log(`response: ${response.data.listOfAppointments}`);
console.log(`EMPL: ${response.data.employeeInfo}`);
console.log(`\helo: ${response.data.hello}`);
return (
<Grid>
<Col>
<MyHeader
navigation={this.props.navigation}
title={context.state.currentDay
.format("DD.MM.YYYY")
.toString()}
/>
{!response.data.listOfAppointments? (
<CircularProgress />
) : (
<ScheduleList data={response.data.listOfAppointments} />
)}
</Col>
</Grid>
);
}}
</Query>
);
}}
</AppContext.Consumer>
);
}
查询:
const query =gql`
query Query($userID:String!,$employeeID:String!,$salonID:String!,$day:Int!,$serviceTime:Int){
hello
listOfAppointments(
userID: $userID
employeeID: $employeeID
salonID: $salonID
day: $day
serviceTime: $serviceTime
) {
start
end
status
disabled
}
employeeInfo(employeeID: $employeeID
salonID: $salonID){
token
name
ID
notifyWhenCreated
notifyWhenDeleted
salonName
}
}
`;
如果我删除listOfAppointments
,employeeInfo
以及声明变量hello
的部分,则工作。
否则会给我状态码:400
react-native log-android
没有抛出任何东西。
如果我尝试console.log()
的结果是undefined
。
谢谢!
答案 0 :(得分:0)
状态码400通常表示查询本身无效。该查询可能存在语法错误,或者某种程度上未通过验证。要获得服务器的详细响应,您可以1)观察服务器in the network tab of your browser的实际响应,或者2)从组件本身捕获错误。
<Query /* props */>
({ data, error }) => {
console.log(error)
return null
}
</Query>
请注意,我们只处理render props函数中的第一个参数,仅使用解构来获取其data
和error
属性。
据我所知,您的查询没有任何语法错误,因此我怀疑问题是实际上您传入的某些或全部变量是未定义的,这将在以下情况导致查询爆炸在查询中,它们中的任何一个都标记为非空。