-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathQuiz.js
63 lines (55 loc) · 1.75 KB
/
Quiz.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import React, { useEffect } from "react";
import { useSelector, useDispatch } from "react-redux";
import { fetchQuiz, selectAnswer, postAnswer } from "../state/action-creators";
export default function Quiz() {
const quiz = useSelector((state) => state.quiz);
const selectedAnswer = useSelector((state) => state.selectedAnswer);
const infoMessage = useSelector((state) => state.infoMessage);
const dispatch = useDispatch();
useEffect(() => {
// Fetch the quiz when the component mounts
dispatch(fetchQuiz());
}, [dispatch]);
const handleSelectAnswer = (answer) => {
dispatch(selectAnswer(answer));
};
const handleSubmitAnswer = () => {
// Submit the selected answer to the server
dispatch(postAnswer());
};
return (
<div id="wrapper">
{quiz ? (
<>
<h2>{quiz.question}</h2>
<div id="quizAnswers">
{quiz.answers.map((answer) => (
<div
key={answer.answer_id}
className={`answer ${
selectedAnswer?.answer_id === answer.answer_id ? "selected" : ""
}`}
>
{answer.text}
<button onClick={() => handleSelectAnswer(answer)}>
{selectedAnswer?.answer_id === answer.answer_id ? "SELECTED" : "Select"}
</button>
</div>
))}
</div>
{/* <pre>{JSON.stringify(quiz, null, 2)}</pre> */}
<button
disabled={!selectedAnswer}
onClick={handleSubmitAnswer}
id="submitAnswerBtn"
>
Submit answer
</button>
{infoMessage && <div>{infoMessage}</div>}
</>
) : (
"Loading next quiz..."
)}
</div>
);
}