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

从后端获取的Workouts数据在控制台显示但无法渲染到网页

问题解决:React中无法渲染API获取的Workouts数据

你的代码里控制台能正常输出workouts数据,但页面无法渲染,核心问题是map回调函数没有返回JSX元素:

你在map中使用了带大括号{}的箭头函数,这种写法需要显式使用return返回元素;如果用隐式返回,要去掉大括号或者用小括号包裹JSX。

修复方案一:使用隐式返回(推荐)

把箭头函数的大括号换成小括号,直接返回JSX:

return (
  <div className="home">
    <div className="workouts">
      {workouts.map((workout) => (
        <p key={workout._id}>{workout.title}</p>
      ))}
    </div>
  </div>
);

修复方案二:添加显式return

保留大括号,手动添加return语句:

return (
  <div className="home">
    <div className="workouts">
      {workouts.map((workout) => {
        return <p key={workout._id}>{workout.title}</p>;
      })}
    </div>
  </div>
);

额外优化

因为你初始化workouts为空数组[],空数组调用map不会报错,所以可以省略workouts &&这个判断,代码会更简洁。

完整修正后的代码

import React, { useEffect, useState } from "react";

const Home = () => {
  const [workouts, setWorkouts] = useState([]);

  useEffect(() => {
    const fetchWorkouts = async () => {
      const response = await fetch("http://localhost:4000/api/workouts");
      const json = await response.json();

      if (response.ok) {
        console.log('success');
        console.log(json);
        setWorkouts(json);
      }
    };

    fetchWorkouts();
  }, []);

  return (
    <div className="home">
      <div className="workouts">
        {workouts.map((workout) => (
          <p key={workout._id}>{workout.title}</p>
        ))}
      </div>
    </div>
  );
};

export default Home;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:55:33