微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SWR 未从 fetcher 填充数据,卡在加载中

如何解决SWR 未从 fetcher 填充数据,卡在加载中

我使用 graphql 和 swr 来获取数据

这是我的提取器:

FetcherHelper.js

const ENDPOINT = "/api/graphql";

const headers = { 'Content-Type': 'application/json' };

export default async function FetchHelper({query}) {

    const options = {
        headers: headers,method: 'POST',body: JSON.stringify({query})
    };
    const res = await fetch(ENDPOINT,options)
    const res_json = await res.json();
    if (res_json.errors) {
        throw (JSON.stringify(res_json.errors));
    }
    return res_json.data;
}

这就是我使用 SWR 的方式

const QUERY_GET_DATA = gql`
query GETDATA{
  getUsers{
    id
    first_name
    last_name
  }
}
`;

const getData = async (query) => {
  const response = await FetchHelper({query});
  console.log('get Data : ',response);
  return response;;
};

响应日志:

{
  "data": {
    "getUsers": [
      {
        "id": "6d9cb858-43e9-473e-84a4-7766095b","first_name": null,"last_name": null
      },{
        "id": "7ce9a327-a4dd-43a3-af8d-53ee87e7","last_name": null
      }
    ]
  }
}

我在组件中使用 SWR,如下所示:

const { dataForForm,error } = useSWR(QUERY_GET_DATA,getData);
  if (error) return <div>Failed to load</div>
  if (!dataForForm) return <div>loading...</div>
  console.log(dataForForm); <-- never executed

它卡在 loading...

但它卡在加载中,dataForForm 从未填充过。

为什么会发生这种情况以及如何解决这个问题?

解决方法

好的,我找到了

这是我的错,我忘记这是破坏

const { data: dataForForm,error } = useSWR(QUERY_GET_DATA,getData);
  if (error) return <div>failed to load</div>
  if (!dataForForm) return <div>loading...</div>
  console.log(dataForForm); 

swr返回的是数据,忘记赋值了。

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?