React 관심사 선택 모달 개선하기
2025. 2. 17. 11:32ㆍ프론트엔드/REACT
728x90
React 관심사 선택 모달 개선하기
📌 기능 개요
사용자가 관심사를 선택할 수 있는 모달을 만들었지만, 기존에는 선택 즉시 user 상태가 변경되는 문제가 있었습니다.
이를 해결하기 위해 임시 상태(tempInterests)를 추가하고, "수정하기" 버튼을 눌러야 반영되도록 개선했습니다.
🛠 구현 과정
1️⃣ 임시 상태(tempInterests) 추가
- 기존에는 interests가 바로 변경되었지만, 이제 tempInterests를 사용하여 선택한 항목을 임시 저장합니다.
- 관심사가 변경되었을 때만 "수정하기" 버튼이 활성화됩니다.
2️⃣ "수정하기" 버튼 동작
- tempInterests와 interests가 다를 때 버튼이 활성화됩니다.
- 선택된 취미가 없으면 버튼이 비활성화됩니다.
const [tempInterests, setTempInterests] = useState(interests);
const handleHobbyClick = (name) => {
const isAlreadySelected = tempInterests.includes(name);
const updatedHobbies = isAlreadySelected
? tempInterests.filter((hobby) => hobby !== name)
: tempInterests.length < 10
? [...tempInterests, name]
: tempInterests;
setTempInterests(updatedHobbies);
};
3️⃣ 버튼 활성화 조건 설정
<button
className={`edit-button ${tempInterests.length > 0 && tempInterests !== interests ? "active" : "inactive"}`}
onClick={handleSave}
disabled={tempInterests.length === 0 || tempInterests === interests}
>
수정하기
</button>
✔ 버튼 활성화 조건:
✅ tempInterests.length > 0 → 최소 하나 이상의 취미가 선택됨
✅ tempInterests !== interests → 기존 관심사와 다를 경우
🎯 결과 및 개선점
✅ 관심사가 즉시 변경되지 않고, 수정 버튼을 눌러야 반영됨
✅ 관심사가 바뀌지 않으면 버튼이 비활성화됨
✅ 최소 1개 이상 선택해야 수정 가능
👉 추가 개선 가능성:
- 선택 가능한 최대 개수(10개)를 UI에서 시각적으로 표시
- 사용자 경험을 개선하기 위해 애니메이션 추가
728x90
'프론트엔드 > REACT' 카테고리의 다른 글
| Framer Motion: React에서 강력한 애니메이션 라이브러리 (4) | 2025.02.17 |
|---|---|
| Zustand 미들웨어와 일정 시간 후 상태 초기화 구현하기(localStorage) (1) | 2025.02.17 |
| React 모달에서 입력값을 "수정하기" 버튼을 눌러야 반영되도록 하기 (3) | 2025.02.17 |
| React에서 관심사(취미) 선택 모달 구현하기 (6) | 2025.02.16 |
| 📌 React에서 페이지네이션과 유효성 검사 구현하기 (0) | 2025.02.15 |