Untitled

 avatar
unknown
plain_text
10 months ago
1.4 kB
3
Indexable
import React, { useState, useEffect } from 'react';
import { Box, Button, Text, VStack } from '@chakra-ui/react';

const Question = ({ question, onAnswer }) => {
    const [selectedAnswer, setSelectedAnswer] = useState(null);
    const [feedback, setFeedback] = useState(null);

    useEffect(() => {
        if (selectedAnswer !== null) {
            const isCorrect = selectedAnswer === question.correct_answer;
            setFeedback(isCorrect ? 'correct' : 'incorrect');
            setTimeout(() => {
                setSelectedAnswer(null);
                setFeedback(null);
                onAnswer(isCorrect);
            }, 1000);
        }
    }, [selectedAnswer, question.correct_answer, onAnswer]);

    const answers = [question.correct_answer, ...question.incorrect_answers].sort();

    return (
        <VStack spacing={4}>
            <Text fontSize="xl">{question.question}</Text>
            {answers.map((answer, index) => (
                <Button
                    key={index}
                    colorScheme={feedback && selectedAnswer === answer ? (feedback === 'correct' ? 'green' : 'red') : 'blue'}
                    onClick={() => setSelectedAnswer(answer)}
                    isDisabled={feedback !== null}
                >
                    {answer}
                </Button>
            ))}
        </VStack>
    );
};

export default Question;
Editor is loading...
Leave a Comment