reactjs - 如何在这里获得 5 星上的 n 星
问题描述
这是我获得评分的功能。我需要 5 颗白色星星并在上面涂上金色。
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>
解决方案
创建一个Rating
组件,该组件采用 rating prop 值并有条件地为星星着色。您可以一次性完成此操作。
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
了 ,但逻辑在概念上是相同的,只需交换您正在使用的任何图像。
推荐阅读
- javascript - 如何在本机反应中将数据从一个组件传递到另一个组件
- java - Spring DefaultListableBeanFactory 内存泄漏结合@DirtiesContext
- pytest - 完全退出 pytest 而不测试任何下一个测试用例,只有少数测试用例失败
- java - 创建两个或多个文档时出现 Apache POI Excel 样式问题
- php - 当我将 var 从 ajax 发送到 php 时,如果 (isset $_Post[]) 不起作用
- centos - MariaDB 高 CPU 和 RAM 使用问题
- vba - 新的 VBA 宏后无法访问 PPT 功能区
- python - 如何使用服务帐户(不是我自己的 AD 帐户)使用 pyodbc 连接到本地 SQL 服务器
- java - 在android studio中转换和发送双倍金额
- python - 将 pandas 中的列合并到 Excel