我想打印明星图标在反应js,就像在第1行和第2行2星同样。
我试过了
const [userList, setUsersList] = useState([]);
const [starClicked, setStarClicked] = useState();
return (
<div className="App">
{[...Array(5)].map((star, idx) => {
return (
<p key={idx} onClick={() => setStarClicked(idx + 1)}>
<StarOutlinedIcon />
</p>
);
})}
{starClicked
? userList
.filter((d) => d.stars === starClicked)
.map((d) => {
return <li key={d._id}> {d.userName} </li>;
})
: userList.map((d) => {
return <li key={d._id}> {d.userName} </li>;
})}
这样做的过滤部分伟大,但只打印5星在一条垂直线。我想要像1颗星一样在1行,2颗星在第2行同样。
发布于 2021-01-07 04:17:11
您需要另一个循环按照它们的索引来呈现星星:
{[...Array(5)].map((star, idx) => {
const actualIndex = idx + 1;
return (
<p key={idx} onClick={() => setStarClicked(actualIndex)}>
{[...Array(actualIndex)].map((_, starIdx) => (
<StarOutlinedIcon key={starIdx} />
))}
</p>
);
})}
https://stackoverflow.com/questions/65611888
复制相似问题