开发者问题收集

如何在组件中调用json数据

2019-08-30
96

我正在尝试通过组件呈现 json 数据,但我认为我缺少了一些东西

timetable.json

{
  "items": [
    {
      "id": "1",
      "day": "Cumartesi",
      "events": [
        {
          "key": "1",
          "start": "09:00",
          "end": "09:30",
          "event": "Toplanma ve Kahvaltı"
        },
...

App.js

const [timeTableData, setTimeTableData] = useState([])
  useEffect(() => {
    const fetchData = async () => {
      const tTableResult = await axios('./timetable.json')
      setTimeTableData(tTableResult.data.items[0])
    }
    fetchData()
  }, [])

Component.js

const { items } = props

   const listGroupItems = Object.keys(items.events).map((item) => {
        return (
          <CardBody key={item.key}>
            {item.start}
            {item.end}
            {item.event}
          </CardBody>
        )
    })

我收到“TypeError:无法将未定义或 null 转换为对象”

2个回答

您尝试在数据到达之前访问 items.events 。请先检查它是否存在

   const listGroupItems = items.events ? Object.keys(items.events).map((item) => {
        return (
          <CardBody key={item.key}>
            {item.start}
            {item.end}
            {item.event}
          </CardBody>
        )
    }) : null
Dupocas
2019-08-30

问题出在这行

setTimeTableData(tTableResult.data.items[0])

请删除 data ,因为它未在您提到的 JSON 结构中定义。因此,您可能会收到 TypeError:无法将 undefined 或 null 转换为 object

Miral Kumbhani
2019-08-30