无法通过SWR获取访问我的数据-React

时间:2020-02-24 11:45:11

标签: reactjs fetch

您好,我尝试构建一个从API提取数据的应用程序。 我使用SWR挂钩获取数据

// libs/fetch.js
import fetch from "isomorphic-unfetch"

export default async function(...args) {
  const res = await fetch(...args)
  return res.json()
}
// App.js
import React, { useEffect } from "react"
import "./styles.css"
import useSWR from "swr"
import fetch from './libs/fetch'

export default function App() {
  const url = "https://data.grandpoitiers.fr/api/records/1.0/search/?dataset=mobilites-stationnement-des-parkings-en-temps-reel&facet=Places_restantes"
  const { data, error } = useSWR(url, fetch)
  return (
    <div className="App">
      {JSON.stringify(data)}
    </div>
  )
}

我无法访问数据值。当我尝试data.records时会返回Cannot read property 'records' of undefined

我不知道该怎么办,我进行了搜索,但是找不到答案。

编辑器: https://codesandbox.io/s/github/MattixNow/PoitiersParker/tree/80871ba94769346a7008312bdb6e4c1143e591a3

有人可以帮助我吗?感谢您的答复

2 个答案:

答案 0 :(得分:5)

根据文档,您必须处理错误和加载案例

export default function App() {
    const url =
        "https://data.grandpoitiers.fr/api/records/1.0/search/?dataset=mobilites-stationnement-des-parkings-en-temps-reel&facet=Places_restantes"
    const { data, error } = useSWR(url, fetch)

    if (error) return <div>failed to load</div>
    if (!data) return <div>loading...</div>

    return (
        <div className="App">

            {JSON.stringify(data.records)}
        </div>
    )
}

答案 1 :(得分:1)

在从服务器获取数据之前,先运行JSON.stringify(data.records)或并发运行。发生错误,因为它是在从服务器获取数据之前执行的。

  <div className="App">

      {
        data&&

        JSON.stringify(data.records)
      }

  </div>