如何通过承诺包装useQuery钩子

时间:2020-03-24 08:41:41

标签: javascript reactjs promise graphql

我有一个graphql查询和useQuery钩子,它们返回很多数据。我通过单击按钮开始加载,并显示何时完成数据加载。 是否可以使用Promise等待加载数据?你能写吗?

const GET_NAME= gql`
    query  {
        employee {
            id
            name
        }
    }
`;

...

function Form () {
...
    const { data } = useQuery(
        GET_NAME
    );

    const onClick = () => {

    ....
    return textInput.current!.value=data.employee.name;

1 个答案:

答案 0 :(得分:2)

使用getQuery中的解构值

您不需要添加在内部处理的承诺。

文档中的示例

  const { loading, error, data } = useQuery(GET_DOGS);

  if (loading) return 'Loading...';  // whilst its loading this will retun
  if (error) return `Error! ${error.message}`; // if there's an error this will return

  return <pre>{data}</pre> // if the other 2 are not true you must have data, this will return

您可以看到加载状态已经在返回中。以及错误。您可以在等待数据返回时对这些值做出响应。