NextJS循环渲染Props问题求助:forEach无法渲染组件内容
NextJS中forEach循环渲染Props数据失败的解决方案
核心问题是**forEach方法没有返回值**,React在JSX中需要接收一个包含可渲染元素的数组来生成页面内容,而forEach仅执行遍历操作,最终返回undefined,所以循环部分不会渲染任何内容。
你需要把所有forEach替换成map方法,map会遍历数组并返回一个新的元素数组,刚好满足React的渲染要求,同时要给每个列表元素添加唯一的key属性(React列表渲染的强制要求)。
修改后的代码如下:
{console.log('the catalog inside the component ----->', catalog)} {Object.keys(catalog).map(key => { return ( <div key={key} className='flex flex-col'> <p className='ml-12 mt-12'>{key}</p> <div className='flex justify-center items-center flex-wrap'> {catalog[key].map((item, index) => { return ( <Image key={`${key}-${index}`} src={`/${key}/${item}`} width={150} height={150} alt={`${item}`} onClick={enlarge} className='cursor-zoom-in m-4' /> ) })} </div> </div> ) })} <p>{catalog.Marca1[0]}</p>
关键修改点说明:
- 外层遍历:将
Object.keys(catalog).forEach改为Object.keys(catalog).map,并给外层<div>添加key={key}(品牌名作为唯一标识) - 内层遍历:将
catalog[key].forEach改为catalog[key].map,给<Image>添加key={${key}-${index}}(组合品牌名和索引确保唯一) - 移除了
<p>标签里的多余反引号:原代码中${key}被反引号包裹,会渲染成带反引号的文本,直接用{key}即可正确显示品牌名
这样修改后,循环部分就能正常渲染出每个品牌对应的标题和图片列表了。
内容的提问来源于stack exchange,提问作者Tezcatlipoca0000
相关产品推荐
相关产品推荐

