【发布时间】:2020-10-04 17:02:56
【问题描述】:
我正在学习 React JS 并花一些时间在 useState 上。
我有以下代码(也可在此处的沙盒中找到 - https://codesandbox.io/s/starswithclicks-dlhjh
import React from "react";
import { FaStar } from "react-icons/fa";
import { useState } from "react";
const Star = ({ selected = false, StarClicked = (f) => f }) => (
<FaStar color={selected ? "red" : "grey"} onClick={StarClicked} />
);
function StarRating() {
const [firstStar, setfirstStar] = useState(false);
const [secondStar, setSecondStar] = useState(false);
const [thirdStar, setThirdStar] = useState(false);
return (
<div>
<p>Stars will come here</p>
<Star
selected={true}
StarClicked={() => {
setfirstStar(true);
setSecondStar(true);
setThirdStar(true);
}}
/>
<Star
selected={firstStar}
StarClicked={() => {
setfirstStar(true);
setSecondStar(false);
setThirdStar(false);
}}
/>
<Star
selected={secondStar}
StarClicked={() => {
setfirstStar(false);
setSecondStar(true);
setThirdStar(false);
}}
/>
<Star
selected={thirdStar}
StarClicked={() => {
setfirstStar(false);
setSecondStar(false);
setThirdStar(true);
}}
/>
<Star
selected={false}
StarClicked={() => {
setfirstStar(false);
setSecondStar(false);
setThirdStar(false);
}}
/>
</div>
);
}
export default StarRating;
现在,我已经设法使用上面的代码完成以下工作,这是我给自己做的一个简单练习。
- 第一颗星,点击后会打开所有中间的三颗星
- 最后一颗星,点击后关闭所有三个中间的星
- 任何中间的星,在点击时会打开,然后关闭其他两个。
现在,我想在屏幕上显示一条简单的消息,如果(中间的三个)星已经亮了。例如。
- 一开始,中间的三颗星都是灰色的。
- 我点击中间的那个,它变成了红色。
- 我再次点击中间的,下面出现一条简单的信息,说已经开启了。
本质上,我想检查给定星的选定属性是真还是假,并相应地在底部显示一条简单的消息。
【问题讨论】: