궁금한 게 생겼다.
단계별 페이지 이동을 step-wizard으로 가는 게 좋은가, 그냥 링크로 가는 게 좋은가
step-wizard로 설정
순차적으로 진행되기 때문에 오류를 방지 할 수 있는 점에서 step-wizard를 선택했다.
const [step, setStep] = useState(1);
// 최소, 최대 값
const updateStep = (newStep: number) => {
setStep(Math.max(1, Math.min(newStep, 4)));
};
const handleNextStepChange = () => {
updateStep(step + 1);
};
const handlePreviousStepChange = () => {
updateStep(step - 1);
};
최소, 최대 값 고려하여 Math.max/min을 사용했다.
1. 이전 버튼
1) step state - 1
2) 맨 처음 페이지는 이전 버튼을 보여주지 않는다.
step이 1일 경우 null, 1보다 클 경우 <IoArrowBackOutline />
const PreviousButton: React.FC<PrevioustButtonProps> = ({ onClick, step }) => {
return <Button onClick={onClick}>{step > 1 ? <IoArrowBackOutline /> : null} </Button>;
};
<PreviousButton onClick={handlePreviousStepChange} step={step} />
2. 변경될 내용
{step === 1 ? (
<Nickname />
) : step === 2 ? (
<Gender />
) : step === 3 ? (
<PhoneNumber />
) : (
<PhoneNumberAuth />
)}
3. 다음 버튼
1) step state + 1
2) 맨 마지막 페이지는 다음 버튼이 완료 버튼이 된다.
step이 4일 경우 텍스트는 완료로 변경
const NextButton: React.FC<NextButtonProps> = ({ onClick, step }) => {
const MAX_STEP = 4;
return <Button onClick={onClick}>{step === MAX_STEP ? "완료" : "다음"}</Button>;
};
<NextButton onClick={handleNextStepChange} step={step} />
'프론트엔드로 가는 길 > portfolio 제작 여정기 👩🏻💻' 카테고리의 다른 글
petDairy_.env 파일 문제 (0) | 2023.12.24 |
---|---|
UGSM_Step page 데이터 저장 (0) | 2023.12.23 |
01.PetDiary_카카오 소셜로그인 (2) | 2023.12.15 |
10. 자살예방웹사이트 - 속성오류 (2) | 2023.10.04 |
08. 자살예방웹사이트 - 게시글 수정페이지 value값 넣기 (0) | 2023.09.14 |