测验一般都可以,但当我在同一答案中点击2次时,我会数到2次分数,就像在同一正确答案中点击100次一样,我得到100分。我不知道如何修理它。。请帮忙。。。
问题箱:
const QuestionBox = ({ question, options, selected }) => {
const [answer, setAnswer] = useState(options);
return (
<div className="questionBox">
<div className="question">{question}</div>
{(answer || []).map((text, index) => (
<button key={index} className="answerBtn" onClick={() => {
setAnswer([text]);
selected(text)
}}>{text}</button>
))}
</div>
)
}
computeAnswer:
computeAnswer = (answer, correctAnswer) => {
if (answer === correctAnswer) {
this.setState({
score: this.state.score + 1,
})
提供:
{this.state.qBank.map(
({ question, answers, correct, id }) => (
<QuestionBox key={id} question={question} options={answers} selected={Answers => this.computeAnswer(Answers, correct)} />
)
)}
当前,answer
将是可能的答案字符串数组,或者是包含用户选择的单个答案的数组。您可以对其进行更改,以便仅当答案的长度大于1时,才会连接click listener:
<button key={index} className="answerBtn" onClick={answer.length === 1 ? null : () => {
// rest of the code
这样,一旦用户选择了答案,进一步单击(现在是单渲染)按钮将不起任何作用,并且分数只会(可能)在第一次单击按钮时增加。
对于一个答案字符串集合来说,
回答
是一个有点奇怪的变量名——为了更好的可读性,也许可以将其重命名为回答选项
或可能的回答
或类似的东西。
您可以将布尔标志设置为问题框状态,初始化为false,并在第一次单击时切换为true,然后如果此标志为true,则绕过分数计算:
const QuestionBox = ({ question, options, selected }) => {
const [answer, setAnswer] = useState(options);
const [alreadyAnswered, setAlreadyAnswered] = useState(false);
return (
<div className="questionBox">
<div className="question">{question}</div>
{(answer || []).map((text, index) => (
<button disabled={alreadyAnswered} key={index} className="answerBtn" onClick={() => {
if(!alreadyAnswered) {
setAnswer([text]);
selected(text);
setAlreadyAnswered(true);
}
}}>{text}</button>
))}
</div>
)
}
我还添加了禁用属性,若问题已经被回答,让用户知道这是一次性的。
此外,将onhtml逻辑放在一个函数中以提高性能也是一个好主意(https://medium.com/@Charles_Stover/cache-you-react-event-listeners-to-提高性能-14f635a62e15)。
顺便说一下,你应该避免用道具初始化状态:反应组件从道具初始化状态
在上一章节里面,我给大家演示了一个Prolog特有的神奇的功能:它能够回答你提出的问题!在这一章里面,我将简单的解释一下Prolog是如何能够回答你的问题的。 首先,还是自己试着把下面的程序写一下,然后加载到SWI-Prolog里面。 parent(di,yuqing). parent(keyuan,jianbo). parent(jianbo,di). ancestor(X,Y):-paren
面试技巧指的是在面试时候的技巧。以下是出国留学网小编整理的面试中的问题及回答技巧,欢迎参考,更多详细内容请点击出国留学网查看。 问题一:“请你自我介绍一下” 思路: 1、这是面试的必考题目。 2、介绍内容要与个人简历相一致。 3、表述方式上尽量口语化。 4、要切中要害,不谈无关、无用的内容。 5、条理要清晰,层次要分明。 6、事先最好以文字的形式写好背熟。 问题二:“谈谈你的家庭情况” 思路: 1
获取回答列表 获取一个回答详情 回答一个提问 采纳一个回答 更新一个回答 删除一个回答 获取用户发布的回答列表 获取回答列表 GET /questions/:question/answers 参数 名称 类型 描述 limit Integer 默认 20 ,获取列表条数,修正值 1 - 30。 offset integer 默认 0 ,数据偏移量,传递之前通过接口获取的总数。 order_typ
主试者可能会问你一些与申请职位完全无关的问题,目的在进一步了解你的思考能力及见识,不要表现出不耐烦或惊讶,以免给雇主一个太计较的印象。以下是出国留学网小编为大家整理的面试的时候回答问题的技巧,欢迎大家阅读,更多精彩内容请关注出国留学网. 诚实有礼 态度诚恳,不宜过分客套和谦卑。 不太明白主试者的问题时,应礼貌地请他重复。 陈述自己的长处时,要诚实而不夸张,视乎申请职位的要求,充份表现自己有关的能力
虽然面试前做了充足的准备,但具体到了面试时,当你与面试官相对而坐,他究竟在想些什么呢?他向你提的问题究竟有什么更深一层的含义呢?以下是出国留学网小编为大家整理的面试遇薪水问题的回答技巧,欢迎大家阅读,更多精彩内容请关注出国留学网. 问:每次去面试,面试官开口的第一句话都是让我自我介绍,可是我的简历上都写得很明白了,还要我讲什么呢? 答:面试官让你做自我介绍,其实是有好几层的含义。其一,通过自我介绍
1. 首先自我介绍,因为大家真的不了解,这就需要我们在最短的时间内向面试官表达最有效和最有利的信息。一般要包括班级、姓名、性格特征、相关的经历经验及一些重要的获奖情况等。 2. 你的自我介绍很短,你认为它能突出你的优点吗?或者说你的介绍很长,你不觉得没有必要吗? 不能全部突出我的优点,但至少说明我的态度:简单、明快、不做作。 我做自我介绍可以不具备太多的辞藻,但是我认为我要有端正的态度。 3.你为