Untitled
unknown
plain_text
2 years ago
1.9 kB
4
Indexable
import {useState} from "react"; import QuestionList from "./data/questions.json"; import QuizResult from "./QuizResult.js"; import Question from "./Question.js"; function calculateResult(markedAnswers) { let correct = 0; QuestionList.forEach((question, index) => { if(question.correctOptionIndex == markedAnswers[index]) { correct++; } }); return { total:QuestionList.length, correct: correct, percentage: Math.trunc((correct / QuestionList.length) * 100) }; } function QuizScreen ({retry}) { const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0); const [markedAnswers, setMarkedAnswers] = useState(new Array(QuestionList.length)); const isQuestionEnd = currentQuestionIndex === QuestionList.length; return ( <div className="quiz-screen"> { isQuestionEnd ? ( <QuizResult result={calculateResult(markedAnswers)} retry={retry} /> ) : ( <Question question= {QuestionList[currentQuestionIndex]} totalQuestions= {QuestionList.length} currentQuestion = {currentQuestionIndex + 1} setAnswer={(index) => { setMarkedAnswers((arr) => { let newArr = [...arr]; newArr[currentQuestionIndex -1 ] = index; return newArr; }); setCurrentQuestionIndex(currentQuestionIndex + 1); }} /> ) } </div> ) } export default QuizScreen;
Editor is loading...
Leave a Comment