尝试使用SWRNext.js提取API时出错

问题描述

我从SWR示例页面成功运行了以下代码

import useSWR from "swr";

const fetcher = url => fetch(url).then(res => res.json());

export default function App() {
  const { data,error } = useSWR(
    "https://api.github.com/repos/vercel/swr",fetcher
  );

  if (error) return "An error has occurred.";
  if (!data) return "Loading...";
  return (
    <div>
      <h1>{data.name}</h1>
      <p>{data.description}</p>
      <strong>{data.subscribers_count}</strong>{" "}
      <strong>{data.stargazers_count}</strong>{" "}
      <strong>{data.forks_count}</strong>
    </div>
  );
}

但是,当我使用自定义API并更新要呈现的属性{data.id}{data.title} ...)时,我收到“发生了错误”。

如果我删除条件退货,我会得到“数据未定义”:

未处理的运行时错误 TypeError:数据未定义

我在项目的其他部分使用了我的API,没有任何问题。

解决方法

我个人像this example

useRequest.js:

ARP

sample.jsx:

import useSWR from 'swr'
import axios from 'axios'

export default function useRequest(request,{ initialData,...config } = {}) {
  return useSWR(
    request && JSON.stringify(request),() => axios(request || {}).then(response => response.data),{
      ...config,initialData: initialData && {
        status: 200,statusText: 'InitialData',headers: {},data: initialData
      }
    }
  )
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...