【发布时间】:2021-03-29 13:07:10
【问题描述】:
我正在构建一个评级组件,它接收许多图标并使用react-icons 显示它们。然而,我的问题是关于我想实现的功能。目前,我使用的反应图标是FaStarhalf,它是一个预填充的半星,我翻转它以制造我创造了半星的错觉。这很容易使用,并且可以完成我需要它做的事情,但是,我想实现一种更好的方式来在您选择星星时进行显示。不幸的是,react-icons 似乎没有能力让我一直填充图标。 FaRegStarHalf 是 react-icons 的另一个组件,它基本上是一个星星的剪裁,但是,你不能填充它。
所以我的问题给你。是否有可能在我的FaStarHalf 组件中单击它时将每个FaStarHalf 更改为react-icons 的填充对应项?我可以将组件从自身内部更改为不同的组件吗?
Rater
import React, { useState } from 'react'
import { FaStarHalf } from 'react-icons/fa'
import './styles/Rater.css'
const Rater = ({ iconCount }) => {
const [rating, setRating] = useState(null)
const [hover, setHover] = useState(null)
return (
<div>
{[...Array(iconCount), ...Array(iconCount)].map((icon, i) => {
const value = (i + 1) / 2
return (
<label>
<input
type='radio'
name='rating'
value={value}
onClick={() => {
console.log(`value => `, value)
return setRating(value)
}}
/>
<div className='star-container'>
<div>
<FaStarHalf
className={i % 2 ? 'star-left' : 'star'}
color={value <= (hover || rating) ? '#ffc107' : '#e4e5e9'}
onMouseEnter={() => setHover(value)}
onMouseLeave={() => setHover(null)}
/>
</div>
</div>
</label>
)
})}
</div>
)
}
export default Rater
FaHalfStar
FaRegHalfStar
【问题讨论】:
-
弄清楚你想要什么有点令人困惑,但为什么不根据需要使用 react-icons 中的填充星呢?
FaStar。因此,如果评级为 3.5 星,则显示 3 个FaStar图标和一个FaHalfStar图标。也许我误解了你遇到的问题?查看来自...Array(iconCount)的数据可能会有所帮助。
标签: javascript css reactjs react-icons