diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-03-17 22:19:18 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-03-17 22:19:18 +0900 |
| commit | facdf9357e576f6d47e7dd23f4f7b2b34f6a8d30 (patch) | |
| tree | 21c6aee60b3ddc26ff88ee3273c887125bb5828f /src/components/FuncMyAnswer.tsx | |
| parent | c739bbfa7cbb68a51755254d59abf15e514795ca (diff) | |
| download | PHPerKaigi2025-tokens-facdf9357e576f6d47e7dd23f4f7b2b34f6a8d30.tar.gz PHPerKaigi2025-tokens-facdf9357e576f6d47e7dd23f4f7b2b34f6a8d30.tar.zst PHPerKaigi2025-tokens-facdf9357e576f6d47e7dd23f4f7b2b34f6a8d30.zip | |
commit files
Diffstat (limited to 'src/components/FuncMyAnswer.tsx')
| -rw-r--r-- | src/components/FuncMyAnswer.tsx | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/components/FuncMyAnswer.tsx b/src/components/FuncMyAnswer.tsx new file mode 100644 index 0000000..63cd427 --- /dev/null +++ b/src/components/FuncMyAnswer.tsx @@ -0,0 +1,32 @@ +import type { Quiz } from "../quiz"; +import React, { useState } from "react"; +import { useDebounce } from "use-debounce"; + +type Props = { + quiz: Quiz; +}; + +const INITIAL_ANSWER = "your_answer"; + +function FuncMyAnswer({ quiz }: Props) { + const [answer, setAnswer] = useState<string>(INITIAL_ANSWER); + const [debouncedAnswer] = useDebounce(answer, 500); + const hasAnyAnswer = debouncedAnswer !== INITIAL_ANSWER; + const isCorrectAnswer = debouncedAnswer === quiz.func; + + const handleAnswerChange = (e: React.ChangeEvent<HTMLInputElement>) => { + setAnswer(e.target.value); + }; + + return ( + <div> + この関数は? + <input type="text" value={answer} onChange={handleAnswerChange} /> + <p> + {hasAnyAnswer && (isCorrectAnswer ? `正解!${quiz.message}` : "不正解")} + </p> + </div> + ); +} + +export default FuncMyAnswer; |
