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

React中array.forEach返回JSX页面不显示但console.log正常的原因

问题原因及解决办法

核心问题:forEach() 无法返回渲染所需的元素数组

你用forEach()遍历项目数组时,这个方法不会返回任何值(返回undefined),它只是单纯执行回调函数里的操作。所以你的findParentsProject函数最终返回的是undefined,React自然无法渲染任何内容。而console.log能正常输出,是因为forEach确实遍历了数组,回调里的日志语句被执行了。

修复方案:用map()替代forEach()

map()方法会遍历数组并返回一个新数组,刚好符合React渲染元素列表的需求。同时注意不要用循环的index作为key,改用每个项目唯一的id,这是React推荐的最佳实践。

修改后的findParentsProject函数:

function findParentsProject(brands, id, parent = null) {
  for(let brand of brands){
    const result = brand.id === id ? parent
                : brand.projects && findParentsProject(brand.projects, id, brand);
    if (result) 
    {
      return Object.values(result.projects).map((project) =>{
        return <p key={project.id}>{project.id}</p>
      })
    }
  }
}

额外说明

递归逻辑本身是能找到目标项目的父级的,只是渲染部分用错了数组方法。替换成map后,函数会返回包含<p>元素的数组,React就能正常渲染这些元素了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:18:10