反应 |如何动态渲染有限数量的组件
React | How to Dynamically Render Limited Numbers of a Component
我正在制作一个具有 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
怎么样
const Ratings = ({value}) => {
return (
<div>
{
[...Array(5)].map((ignore,ind) => { // you just use indice here
return (
<span key={ind}>
<I
className={
value >= ind + 1
? 'fas fa-star'
: value >= ind + 0.5
? 'fas fa-star-half-alt'
: 'far fa-star'
}
></i>
</span>
)
})
}
</div>
)
}
export default Ratings
使用map
仍然是个不错的主意。您可以使用以下代码。并假设变量 rating
具有当前值。例如 rating = 2.5
.
var arr = new Array(5);
var list = arr.map((value, index)=>{
return (
<span key={index}>
<i className={rating<=0.5+index ? 'fas fa-star-half-alt' : rating <= 1+index ? 'fas fa-star' : 'far fa-star'}></i>
</span>
);
})
然后您可以使用 list
变量来放置您的评分。
我正在制作一个具有 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
怎么样
const Ratings = ({value}) => {
return (
<div>
{
[...Array(5)].map((ignore,ind) => { // you just use indice here
return (
<span key={ind}>
<I
className={
value >= ind + 1
? 'fas fa-star'
: value >= ind + 0.5
? 'fas fa-star-half-alt'
: 'far fa-star'
}
></i>
</span>
)
})
}
</div>
)
}
export default Ratings
使用map
仍然是个不错的主意。您可以使用以下代码。并假设变量 rating
具有当前值。例如 rating = 2.5
.
var arr = new Array(5);
var list = arr.map((value, index)=>{
return (
<span key={index}>
<i className={rating<=0.5+index ? 'fas fa-star-half-alt' : rating <= 1+index ? 'fas fa-star' : 'far fa-star'}></i>
</span>
);
})
然后您可以使用 list
变量来放置您的评分。