在 apollo Gql 和 REACT 中执行查询后如何等待钩子?

how await a hook after execute a query in apollo Gql and REACT?

我有以下问题,我想执行一个需要ID用户的查询,但我已经从一个钩子中查询了ID用户,代码:

export default function useGetDatosPersonales() {
  
    const [viewer, refetchViewer] =  useViewer();
    const {data} = useQuery(qUsuario,{
        variables: {
            user: viewer && viewer.id
        }
    });
    const functionCall = (render) => { 
       if(data !== null && data !== undefined){
           console.log(data.user.email);
        }
    }

    return [functionCall,data];
    
}

查询 qUsuario 是:

query qUsuario($user:ID!){
  user(id:$user){
    email,
    firstName,
    lastName,
  }
}

但是我第一次遇到以下错误:

[GraphQL error]: Variable "$user" of required type "ID!" was not provided.

几毫秒后,查询成功了!

我怎么能告诉 apollo 在执行查询之前等待 id

您需要使用 useLazyQuery,因为 useQuery 不会永远等待。

或者您可以使用 async-await 语法直接使用客户端实例并在异步下完全控制。