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
相关产品推荐
相关产品推荐

