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

React组件未渲染排查:获取数据库数据后组件不渲染原因分析

问题原因及修复方案

核心问题是**map的回调函数没有返回要渲染的JSX元素**。

看你这段渲染代码:

{todos.map((todo) => {
  console.log(todo);
  console.log(todo.text);
  <div key={todo._id}>
    {todo.text}
    {`${todo.completed}`}
  </div>
})}

因为你用大括号{}包裹了回调逻辑,但没有显式写return语句,所以map执行后返回的是一个由undefined组成的数组,React无法渲染任何有效内容——虽然控制台能打印出todo数据,但这些数据并没有被用来生成JSX返回给组件。

两种修复方式:

  • 显式添加return:
{todos.map((todo) => {
  console.log(todo);
  console.log(todo.text);
  return <div key={todo._id}>
    {todo.text}
    {`${todo.completed}`}
  </div>
})}
  • 改用小括号实现隐式返回:
    把回调的大括号换成小括号,JS会自动返回括号里的最后一个表达式:
{todos.map((todo) => (
  console.log(todo),
  console.log(todo.text),
  <div key={todo._id}>
    {todo.text}
    {`${todo.completed}`}
  </div>
))}

额外提醒:确保todos的初始状态是数组(比如const [todos, setTodos] = useState([])),避免组件挂载初期因为todos不是数组而触发map报错。

内容的提问来源于stack exchange,提问作者최석규

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:50:33