Apollo React客户端调用查询报Int cannot represent non-integer value: Int错误
错误成因
你客户端定义的GraphQL查询存在语法错误:当需要通过useQuery的variables动态传参时,你没有按照规范先声明查询变量,反而直接把类型关键字Int作为参数值传入了currentUser接口,相当于服务端实际收到的id参数值是字符串"Int",和你定义的Int!参数类型不匹配,因此触发类型校验报错。
解决方法
根据你的使用场景选择以下任意一种修正方案即可:
- 方案1:直接在查询中写死参数值,和你在Apollo Playground中的写法保持一致
const ReturnCurrentUser = gql` query Query { currentUser(id: 1) { id } } `; - 方案2:正确声明查询变量,适配动态传参的需求
先在查询头部声明接收的变量名、变量类型,再将变量作为参数传入接口即可,和你原有的variables传参逻辑完全适配:const ReturnCurrentUser = gql` # 声明查询接收的变量,变量名$id和后续variables的key对应,类型和服务端定义的Int!对齐 query Query($id: Int!) { currentUser(id: $id) { id } } `; // 原有逻辑无需修改 const {loading, error, data} = useQuery(ReturnCurrentUser, {variables: {id: 1}});
内容的提问来源于stack exchange,提问作者Peter Boomsma
相关产品推荐
相关产品推荐

