리액트 현재 문제점 -> (타입스크립트와 테일윈드를 사용중임)
컴포넌트 문제
현재 생각하는 해결법 : Outlet으로 내려가는 주소말고 베이스 주소에 URL을 달자, 대신 베이스 주소로 들어가게 되면 리다이렉트로 디폴트 페이지로 이동하게
<Route index element={<Navigate to="reservedMeeting" />} /> reservedMeeting를 기본 주소로 설정 /base 밑에 라우터에 저것을 쓰면 /base 접속 시 /base/하위기본주소 로 자동 연결
=> Submit이라기에는 내용 초기화는 안되는데?
useState 값이 변하지 않는다
import React, { useState, useEffect } from 'react';
interface Options { id: number; option_text: string; }
interface VoteQuestionForm { question_id: number; question_text: string; options: Options[]; }
interface VoteFormProps { question: VoteQuestionForm; voteSelection: (questionId: number, optionId: number) => void; }
const VoteForm: React.FC<VoteFormProps> = ({ question, voteSelection }) => { const [selectedItem, setSelectedItem] = useState<number>(0);
useEffect(() => { console.log('렌더링') console.log(selectedItem) },[selectedItem]) const handleOptionChange = (optionId: number) => { voteSelection(question.question_id, optionId); setSelectedItem(optionId) };
return (
<div className="mb-4">
<h2 className="text-xl font-bold mb-2">{question.question_text}</h2>
{question.options.map((option) => (
<div key={option.id} className="mb-2">
<label className="flex items-center">
<input
type="radio"
name={vote-${question.question_id}
}
value={option.id}
onChange={() => handleOptionChange(option.id)}
onClick={() => setSelectedItem(option.id)}
className="mr-2"
checked={selectedItem == option.id}
/>
{option.option_text}
</label>
</div>
))}
</div>
);
};
export default VoteForm;