reactjs 未提供所需类型“ID!”的变量“$projectId”400错误请求

kdfy810k  于 5个月前  发布在  React
关注(0)|答案(2)|浏览(55)

Apollo客户端查询

`export const GET_PROJECT = gql`
  query singleProject($projectId: ID!) {
    getProject(projectId: $projectId) {
      _id
      name
      description
      status
    }
  }
;``

字符串
useQuery

const { projectId } = useParams();

  const { loading, error, data } = useQuery(GET_PROJECT, {
    variables: { projectId : projectId },
  });

  const project = data?.project || {};


查询在Apollo Sandbox中工作正常,如下所示

{
  "data": {
    "getProject": {
      "_id": "6595f304af46ebccba110bd0",
      "name": "New prroject",
      "description": "HTML & CSS",
      "status": "planning"
    }
  }
}


400 Bad Request and response with an error errors:[{message:“Variable“$projectId”of required type“ID!”was not provided.",.}]问题可能是什么-任何帮助??
代码在后端工作,可以在Apollo Sandbox中获取数据,但无法找出当我尝试运行useQuery时未提供所需类型ID的原因。

vmjh9lq9

vmjh9lq91#

1.首先检查projectId是否为undefined

useEffect(() => {
        console.log('projectId=', projectId);
    }, [projectId]);

字符串

  1. $projectId是必需的,所以当项目id为undefined时,您可以跳过执行查询。
const { loading, error, data } = useQuery(GET_PROJECT, {
        variables: { projectId : projectId },
        skip: !projectId,
    });

yduiuuwa

yduiuuwa2#

我在复杂的情况下-所以我简化了过程-我给给予项目详细页面路由“项目/:id”比我能够通过使用PHP Params钩子获得projectId. Besides的代码,为我工作-没有什么区别.

const { id } = useParams();
  const { loading, error, data } = useQuery(GET_PROJECT, {
    variables: { projectId: id },
});

字符串
谢谢你!

相关问题