浏览代码

fixed quiz timer update issue

develop
Ajay_S 3 年前
父节点
当前提交
3e65733617
共有 3 个文件被更改,包括 16 次插入17 次删除
  1. +1
    -1
      src/mockData/QuizDetails.ts
  2. +13
    -12
      src/pages/quiz/Question.tsx
  3. +2
    -4
      src/pages/quiz/Quiz.tsx

+ 1
- 1
src/mockData/QuizDetails.ts 查看文件

@@ -23,7 +23,7 @@ const Quiz_Details: QuizDetails[] = [
], ],
answer: ["alert('Hello World');"], answer: ["alert('Hello World');"],
result: false, result: false,
timeLimit: 25
timeLimit: 10
}, },
{ {
question: "is javascript", question: "is javascript",


+ 13
- 12
src/pages/quiz/Question.tsx 查看文件

@@ -14,23 +14,26 @@ interface OwnProp {
let timeout: NodeJS.Timeout; let timeout: NodeJS.Timeout;


const Question: React.FC<OwnProp> = (props) => { const Question: React.FC<OwnProp> = (props) => {

const [seconds, setSeconds] = useState<number>(props.timeLimit); const [seconds, setSeconds] = useState<number>(props.timeLimit);
const [duration, setDuration] = useState<number>(props.timeLimit);
const displaySeconds = seconds % 60; const displaySeconds = seconds % 60;


useEffect(() => {
setSeconds(props.timeLimit);
setDuration(props.timeLimit);
}, [props.questionNumber]);

useEffect(() => { useEffect(() => {
setTimeout(() => { setTimeout(() => {
if (seconds <= 0) {
props.updateQuestionNumber();
console.log(props.timeLimit);
setSeconds(5)
} else {
if (seconds > 0) {
setSeconds(seconds - 1); setSeconds(seconds - 1);
} else {
props.updateQuestionNumber();
} }
}, 500);
}, 1000);
}, [seconds]); }, [seconds]);




const renderTime = () => { const renderTime = () => {
return ( return (
<div className={styles.time}> <div className={styles.time}>
@@ -56,13 +59,11 @@ const Question: React.FC<OwnProp> = (props) => {


<CountdownCircleTimer <CountdownCircleTimer
isPlaying isPlaying
duration={props.timeLimit}
duration={duration}
colors={'#6BD534'} colors={'#6BD534'}
size={60} size={60}
onComplete={() => { onComplete={() => {
// setSeconds(COUNTDOWN_AMOUNT_TOTAL);
// props.updateQuestionNumber();
return { shouldRepeat: true }
return { shouldRepeat: true, delay: 1.5 }
}} }}
strokeWidth={5} > strokeWidth={5} >




+ 2
- 4
src/pages/quiz/Quiz.tsx 查看文件

@@ -11,15 +11,13 @@ import Quiz_Details from '../../mockData/QuizDetails';
const Quiz: React.FC = () => { const Quiz: React.FC = () => {


const [questionNumber, setQuestionNumber] = useState<number>(1); const [questionNumber, setQuestionNumber] = useState<number>(1);
const timeLimit = Quiz_Details[questionNumber - 1].timeLimit;


const updateQuestionNumber = () => { const updateQuestionNumber = () => {
console.log("update")
if (Quiz_Details.length > questionNumber) { if (Quiz_Details.length > questionNumber) {
setQuestionNumber((questionNumber) => questionNumber + 1); setQuestionNumber((questionNumber) => questionNumber + 1);
} }
} }
console.log("no", questionNumber);
console.log(Quiz_Details[questionNumber - 1]);


return ( return (
<div className={styles.quizContainer}> <div className={styles.quizContainer}>
@@ -33,7 +31,7 @@ const Quiz: React.FC = () => {


<Question question={Quiz_Details[questionNumber - 1].question} <Question question={Quiz_Details[questionNumber - 1].question}
questionNumber={questionNumber} questionNumber={questionNumber}
timeLimit={Quiz_Details[questionNumber - 1].timeLimit}
timeLimit={timeLimit}
updateQuestionNumber={updateQuestionNumber} /> updateQuestionNumber={updateQuestionNumber} />


</div> </div>


正在加载...
取消
保存