Quiz.js 4.39 KB
Newer Older
김민수's avatar
김민수 committed
1
import React, { useState } from 'react'
김민수's avatar
김민수 committed
2
import { Link } from 'react-router-dom';
김민수's avatar
김민수 committed
3
import Timer from 'react-compound-timer'; // 타이머쓰기위해 import
김민수's avatar
김민수 committed
4
import 'bootstrap';
김민수's avatar
김민수 committed
5
6
import logo from './img_question.png'
import fight from './img_quiz.png'
김민수's avatar
김민수 committed
7

김민수's avatar
김민수 committed
8
9
10
11
const QnA = [
    { Q: "6 X 4 = ?", Choose: [6, 12, 18, 24], A: "", N: 1 },
    { Q: "3 + 3 = ?", Choose: [2, 4, 6, 8], A: "", N: 2 },
    { Q: "3 - 1 = ?", Choose: [1, 2, 3, 4], A: "", N: 3 }
김민수's avatar
김민수 committed
12
13
]

김민수's avatar
김민수 committed
14
function Quiz() {
김민수's avatar
김민수 committed
15
    let [question, setQuestion] = useState({
김민수's avatar
김민수 committed
16
17
18
19
20
21
        ...QnA[0],
        i: 0,
        page: 0,
    })
    let [selected, setSelected] = useState("")  //선택한 답을 보여줄 것들

김민수's avatar
김민수 committed
22
23
    function handleQuestion() {
        setQuestion({ ...QnA[question.i + 1], i: question.i + 1, page: question.page + 1 })
김민수's avatar
김민수 committed
24
    }
김민수's avatar
김민수 committed
25
26
27
28
29
30
31
    let handleChange = (ev) => {
        ev.preventDefault()  //새로고침 안되도록
        setSelected(ev.target.value)  //selected값 변경
        let slt = ev.target.value  //slt에 선택한값 받아옴

        let count = question.Choose.length  //이거 정확히 뭘로할지 모르겠어요 ㅜㅜ

김민수's avatar
김민수 committed
32
33
        // let checked_index = -1;
        let checked_value = '';
김민수's avatar
김민수 committed
34
35
36
        checked_value = slt;

        //localStorage.setItem('번문제 답' + checked_value, checked_value)
김민수's avatar
김민수 committed
37
        for (let i = 0; i < count; i++) {
김민수's avatar
김민수 committed
38
            if (ev.target.checked) {  //이거 맞는지도 잘..
김민수's avatar
김민수 committed
39
                // checked_index = i;
김민수's avatar
김민수 committed
40
41
                checked_value = slt;
                localStorage.setItem(question.i + 1 + '번문제 답', checked_value)
김민수's avatar
김민수 committed
42
43
            }
        }
김민수's avatar
김민수 committed
44
    }
김민수's avatar
김민수 committed
45
46
    return (
        <>
김민수's avatar
김민수 committed
47
           <img src={fight} style={{ position: "absolute", top: "65px",left: "1050px" }} alt="lion" /> 
김민수's avatar
김민수 committed
48
            <div className="Quiz">
김민수's avatar
김민수 committed
49
              { <h1><img src={logo} style={{ marginLeft: "450px" }} width='75' height='75' alt='question' /> <span style={{ fontSize: "75px", marginLeft: "30px" }}>{question.Q}</span></h1> }
김민수's avatar
김민수 committed
50
51
52
53
54
55
56
57
58
59
60
61
62
63
                <div style={{ textAlign: "center", marginTop: "30px", marginBottom: "30px" }}>정답을 선택하세요</div>

                <div>
                    <form>
                        {question.Choose.map((a, index) =>
                            <div key={index}>
                                <input type="radio" name='answer' id={'anwer' + a} value={a} onClick={handleChange} style={{ marginLeft: "475px", width: "25px", height: "25px" }} />
                                <label htmlFor={a} style={{ fontSize: "40px", marginLeft: "22px" }}>{a}</label>
                            </div>
                        )}
                        <input hidden type="submit" value="확인" />    {/*버튼 숨김*/}
                    </form>
                    <p style={{ fontSize: "20px", marginLeft: "600px" }}>선택한  :<span style={{ color: "green", fontWeight: "bold", fontSize: "90px", marginLeft: "30px" }}> {selected}</span>  {/* 선택한  보여줌 */}<span style={{ marginLeft: "50px" }}>            {(question.page === QnA.length - 1)
                        ? <Link to="/end">제출</Link>
김민수's avatar
김민수 committed
64
                        : <button type="button" onClick={handleQuestion} style={{ width: "85px", height: "40px" }} >다음</button>
김민수's avatar
김민수 committed
65
66
67
68
69
70

                    }</span>
                    </p>
                </div>


김민수's avatar
김민수 committed
71
                {/* 마지막 질문일 경우 /end페이지로 이동, 그렇지 않을경우는 this.setQuestion발생 */}
김민수's avatar
김민수 committed
72
73
                {/* {(question.page === QnA.length - 1)
                ? <Link to="/end">제출</Link>
김민수's avatar
김민수 committed
74
                : <button type="button" onClick={handleQuestion} >다음</button>
김민수's avatar
김민수 committed
75
76
77
78
79
80
81
82
83
84
85
86
87

            } */}

                {/* <input onKeyPress="this.enterkey()"/> */}


                <p style={{ textAlign: "center", fontSize: "30px", color: "crimson" }}>
                    <Timer
                        initialTime={3050}
                        direction="backward"
                        checkpoints={[
                            {
                                time: 0,
김민수's avatar
김민수 committed
88
                                callback: handleQuestion
김민수's avatar
김민수 committed
89
90
91
92
93
94
95
                                //  history.go(1)
                            }
                        ]}
                    >
                        {() => (
                            <>
                                <Timer.Seconds /> seconds
김민수's avatar
김민수 committed
96
                        </>
김민수's avatar
김민수 committed
97
98
99
100
                        )}
                    </Timer>     {/* npm i react-compound-timer */}
                </p>

김민수's avatar
김민수 committed
101
            </div>
김민수's avatar
김민수 committed
102
103
104
105
106
        </>
    )



김민수's avatar
김민수 committed
107
108
}

김민수's avatar
김민수 committed
109

김민수's avatar
김민수 committed
110
export default Quiz;