You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React使用fetch获取数据后调用map报undefined错误如何解决?

问题原因
  • 取值逻辑不匹配:你在请求回调中已经将接口返回的json.items(新闻列表数组)直接赋值给pressReleases状态,但渲染时错误读取pressReleases.items,pressReleases本身是数组不存在items属性,读取结果为undefined,调用map方法直接触发报错。
  • 初始状态设置错误:pressReleases的初始值被设为[null],即使修正取值逻辑,首次渲染也会遍历到null值,容易引发后续组件渲染异常。
修正方案

修改状态初始值与渲染逻辑即可,修正后参考代码如下:

import React, { useState, useEffect } from 'react';
import styled from 'styled-components';

export const PressReleaseList = () => {
  // 初始值改为空数组,匹配后续存入的新闻列表数组类型
  const [pressReleases, setPressReleases] = useState([]);

  useEffect(() => {
    (async function () {
      try {
        const res = await fetch(
          'https://feed.mfn.se/v1/feed/3XXXXX.json'
        );
        const json = await res.json();
        setPressReleases(json.items);
      } catch (e) {
        console.error(e);
      }
    })();
  }, []);

  return (
    <Main>
      {/* 直接遍历pressReleases,加可选链兜底避免异常 */}
      {pressReleases?.map((item) => (
        <TextCell key={item.news_id}>
          <CategoryText>{item.title}</CategoryText>
        </TextCell>
      ))}
    </Main>
  );
}
可选优化

如果需要避免空屏体验,可以额外新增loading状态,在接口请求完成前渲染加载提示组件。

内容的提问来源于stack exchange,提问作者sssylvasss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:06:03