import React, { useState, useCallback, useMemo, memo } from 'react' import AudioPlayer from '@/components/AudioPlayer' import { ChoiceTestProps } from '@/types/review' import { ErrorReportButton, TestResultDisplay, TestHeader } from '@/components/review/shared' interface VocabChoiceTestProps extends ChoiceTestProps { // VocabChoiceTest specific props (if any) } const VocabChoiceTestComponent: React.FC = ({ cardData, options, onAnswer, onReportError, disabled = false }) => { const [selectedAnswer, setSelectedAnswer] = useState(null) const [showResult, setShowResult] = useState(false) const handleAnswerSelect = useCallback((answer: string) => { if (disabled || showResult) return setSelectedAnswer(answer) setShowResult(true) onAnswer(answer) }, [disabled, showResult, onAnswer]) const isCorrect = useMemo(() => selectedAnswer === cardData.word , [selectedAnswer, cardData.word]) return (
{/* 標題區 */} {/* 指示文字 */}

請選擇符合上述定義的英文詞彙:

{/* 定義顯示區 */}

定義

{cardData.definition}

{/* 選項區域 - 響應式網格布局 */}
{options.map((option, idx) => ( ))}
{/* 結果反饋區 */} {showResult && ( )}
) } export const VocabChoiceTest = memo(VocabChoiceTestComponent) VocabChoiceTest.displayName = 'VocabChoiceTest'