설명
멘토링(12/28) 피드백을 반영하여 필터 로직을 리팩토링 합니다.
멘토링에서 다뤘던 주제
- 상태 관리를 어디서, 뭘로? → SSOT
- 선택된 (페이지에 보여줘야하는) 상태: search param
- 모달에서 선택 중인 상태: draft
+ temp
- 중첩된 객체의 업데이트: 업데이트 했지만 참조값이 변하지 않음
- immer 사용 또는 직접 뎁스별 복사 (깊은 복사)
작업 상세 내용
// FilterModal.tsx 내부 아래 로직 제거
// const [tempRegion, setTempRegion] = useState(draft.region);
// const [tempDate, setTempDate] = useState(draft.date);
// const [tempTime, setTempTime] = useState(draft.time);
// const [tempLevel, setTempLevel] = useState(draft.level);
기타
const handleToggle = (sido: string, sigungu: string, checked: boolean) => {
setDraft((prev) => { // immer
const currentList = prev?.[sido] || [];
const newList = checked
? [...currentList, sigungu] // deep copy
: currentList.filter((i) => i !== sigungu);
// ...
참고
설명
멘토링(12/28) 피드백을 반영하여 필터 로직을 리팩토링 합니다.
작업 상세 내용
temp-*->draft기반으로 수정 (SSOT)기타
time: [number, number]어떻게 해결됐는지 알아보기regionImmer 사용 고려해보기참고