import { useState } from 'react' import { ChoiceTestProps, ReviewCardData } from '@/types/review' import { useReviewLogic } from '@/hooks/useReviewLogic' import { CardHeader, AudioSection, ErrorReportButton } from '@/components/review/shared' // 優化後的 VocabChoiceTest 組件 export const VocabChoiceTest: React.FC = ({ cardData, options, onAnswer, onReportError, disabled = false }) => { // 使用共用邏輯 Hook const { userAnswer, feedback, isSubmitted, submitAnswer } = useReviewLogic({ cardData, testType: 'VocabChoiceTest' }) const [selectedAnswer, setSelectedAnswer] = useState(null) // 處理選項點擊 const handleOptionClick = (option: string) => { if (isSubmitted || disabled) return setSelectedAnswer(option) const result = submitAnswer(option) onAnswer(option) } return (
{/* 音頻播放區 */}
{/* 標題區 */}

詞彙選擇

{/* 指示文字 */}

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

{/* 定義顯示區 */}

定義

{cardData.definition}

{/* 選項區域 - 響應式網格布局 */}
{options.map((option, idx) => { const isSelected = selectedAnswer === option const isCorrect = feedback && feedback.isCorrect && isSelected const isWrong = feedback && !feedback.isCorrect && isSelected return ( ) })}
{/* 結果回饋 */} {feedback && (

{feedback.explanation}

)} {/* 例句區域 */}

例句

{cardData.example}

{cardData.exampleTranslation}

{/* 底部按鈕 */}
) } // 向後相容包裝器 interface LegacyVocabChoiceTestProps { word: string definition: string example: string exampleTranslation: string pronunciation?: string difficultyLevel: string options: string[] onAnswer: (answer: string) => void onReportError: () => void disabled?: boolean } export const VocabChoiceTestLegacy: React.FC = (props) => { const cardData: ReviewCardData = { id: `temp_${props.word}`, word: props.word, definition: props.definition, example: props.example, translation: props.exampleTranslation || '', pronunciation: props.pronunciation, synonyms: [], // VocabChoiceTest 原來沒有 synonyms difficultyLevel: props.difficultyLevel, exampleTranslation: props.exampleTranslation } return ( ) }