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

React中Material-UI图标无法在数组循环中渲染的问题求助

解决React + Material-UI星级评分不显示的问题

我帮你找出了几个关键问题,一个个来修复就能解决啦:

1. StarRateIcon组件使用方式完全错误

你现在的代码里把StarRateIcon当成了<p>标签的属性,这根本没起到渲染组件的作用,编辑器自然会提示“已导入但未被使用”。

错误代码片段:

{Array(rating)
  .fill()
  .map((_, i) => (
    <p StarRateIcon className="star" />
  ))}

正确写法:
要把StarRateIcon作为React组件来使用,直接写组件标签就行,记得加上key属性(React列表渲染必须的优化项):

{Array(rating)
  .fill()
  .map((_, i) => (
    <StarRateIcon key={i} className="star" />
  ))}

如果一定要用<p>标签包裹图标,就把组件放在标签内部:

{Array(rating)
  .fill()
  .map((_, i) => (
    <p key={i} className="star">
      <StarRateIcon />
    </p>
  ))}

2. 空Product组件缺少必要props

在Home.js里你渲染了一个没有任何props的<Product />组件,它没有传递rating值,会导致Array(rating)变成Array(undefined)(空数组),自然不会渲染星星,还可能引发潜在报错。你可以给它补全props,或者直接移除这个空组件:

修改后的Home.js相关代码:

<div className="home_row">
  <Product id="890778" title="Description" price={99.99} image="https://m.media-amazon.com/images/I/71BGLa7IFtL._AC_UY218_.jpg" rating={5} />
  {/* 要么补全props,要么删除下面这行 */}
  <Product id="123456" title="Another Product" price={49.99} image="your-product-image-url" rating={3} />
</div>

3. React类名拼写错误

Home.js里的<div classname="home">要改成<div className="home">,React中统一使用className代替原生HTML的class,小写的classname不会被识别为类名属性,可能导致样式失效。

把这些修改完之后,你的星级评分应该就能正常显示,编辑器的“未使用”提示也会消失啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 12:27:40