【发布时间】:2021-03-09 02:18:14
【问题描述】:
我正在制作一个评分组件,它有 5 颗星。每颗星星会根据值有不同的符号。
<span>
<i
className={
value >= 1
? 'fas fa-star'
: value >= 0.5
? 'fas fa-star-half-alt'
: 'far fa-star'
}
></i>
</span>
我不想复制粘贴其中的 5 个并更改值,而是想知道如何使其动态化。 使用 Map() 没有意义,因为我没有枚举导入的数据,并且星星的固定限制为 5。
想法:将索引乘以 '1' 并将索引添加到 '0.5'。
完整代码:
import React from 'react';
const Rating = ({ value, text }) => {
return (
<span key={index}>
<i
className={
value >= 1
? 'fas fa-star'
: value >= 0.5
? 'fas fa-star-half-alt'
: 'far fa-star'
}
></i>
</span>
)
})
}
export default Rating;
//full star = fas fa-star
//empty star = far fa-star
//half-star = fas fa-star-half-alt
【问题讨论】:
-
刚刚意识到我的想法实际上行不通。如果它从 0 开始,则 1 * 0 = 0 和 0.5 + 0 = 0.5,不起作用。如果它从 1 开始,那么 1 * 1 = 1 和 0.5 + 1 = 1.5,也不起作用。所以 0.5 必须是 -0.5 并且枚举应该从 1 开始。
-
只需运行一个从
1到floor(star)的循环,然后检查最后一个半星的循环后是否还有0.5,即star-floor(star)>0
标签: javascript reactjs sorting for-loop enumeration