如何在这里获得 5 星上的 n 星

How to get n stars on 5 stars here

这是我获得星级评分的功能。我需要 5 颗白星,并在上面打上 n 颗金色。

let n = []
for(var i = 0; i < product.avg_rating; i++) {
  n.push(<i class="fa fa-star" key={i}></i>)
}

我在这里调用这个变量

<div className="rating">
  {n}
</div>

根据我对你问题的理解 你可以这样做:

let golden = [];
for(var i = 0; i < product.avg_rating; i++) {
  golden.push(<i class="fa fa-star" key={i}></i>)
}
let white = [];
for(var i = 0; i < (5-product.avg_rating); i++) {
  white.push(<i class="fa fa-star" key={i}></i>) // provide appropriate class for white stars
}

return(
<div className="rating">
{golden}
{white.map((i)=><span> {i} </span>)}
</div>
)

创建一个 Rating 组件,该组件采用评级道具值并有条件地为星星着色。您可以一次完成此操作。

import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faStar } from "@fortawesome/free-solid-svg-icons";

// create [1,2,3,4,5] once
const starArray = [...Array(5).keys()].map(i => i + 1);

const Rating = ({ rating }) =>
  starArray.map(i => ( // use many times
    <FontAwesomeIcon
      key={i}
      icon={faStar}
      color={rating >= i ? "orange" : "lightgrey"}
    />
  ));

我使用了 react-fontawesome,但逻辑在概念上是相同的,只需换用您正在使用的任何图标即可。