1. Modal Edit 컴포넌트 생성
먼저 게시글 수정 기능을 위해 Modal Edit 컴포넌트를 생성했다.
모달은 일반 페이지와 달리:
- 화면 위에 떠야 하고
- 배경을 어둡게 처리해야 하며
- 상태로 열고 닫는 제어가 필요하다
그래서 isOpen 상태를 기반으로 렌더링을 제어했다.
{isOpen && <ModalEdit />}
👉 이 구조 덕분에 재사용 가능한 모달 패턴을 만들 수 있었다.
⚙️ 2. Modal Edit 기능 구현
모달 안에서는 다음 기능들을 구현했다:
- 기존 데이터 불러오기
- 입력값 수정
- 저장 버튼 클릭 시 업데이트
특히 중요한 포인트는:
✔ controlled component 사용
✔ 입력값을 state로 관리
✔ API 요청으로 데이터 수정
const [title, setTitle] = useState('');
🎨 3. Modal 스타일링
모달 UI는 사용자 경험에 큰 영향을 준다.
핵심 스타일 요소:
- 중앙 정렬
- 배경 오버레이
- 스크롤 방지
.modal-overlay {
position: fixed;
background: rgba(0,0,0,0.5);
}
position: fixed;
background: rgba(0,0,0,0.5);
}
👉 UX를 위해 클릭 시 외부 영역에서 닫히도록 처리한 것도 중요했다.
🪵 4. LoggerModal 컴포넌트 생성
로그를 보여주는 별도의 모달(LoggerModal)도 생성했다.
이 컴포넌트는:
- 사용자 행동 기록 확인
- 디버깅용 UI
👉 기능별로 모달을 분리하면서 컴포넌트 구조가 훨씬 깔끔해졌다.
📄 5. LogItem 컴포넌트 분리
로그 리스트를 관리하기 위해 LogItem 컴포넌트를 만들었다.
이렇게 분리하면:
- 유지보수 쉬움
- 재사용 가능
- UI 변경 시 영향 최소화
<LogItem log={log} />
🎨 6. LogItem 스타일링
로그 UI는 단순하지만 가독성이 중요했다.
- 날짜
- 내용
- 구분선
👉 작은 UI라도 사용자 입장에서 읽기 쉽게 만드는 것이 핵심이었다.
🗑️ 7. 게시판 삭제 기능 구현
마지막으로 게시글 삭제 기능을 추가했다.
삭제 기능에서 중요한 점:
- 확인(alert or modal)
- 상태 업데이트
- 서버 동기화
const handleDelete = async () => {
await deletePost(id);
};
await deletePost(id);
};
👉 낙관적 업데이트 vs 서버 응답 후 처리 고민도 해볼 수 있는 부분이었다.
💡 느낀 점
이번 구현을 통해 배운 점은 크게 세 가지다:
1. 컴포넌트 분리가 곧 유지보수성이다
Modal, LogItem 등 분리하면서 코드가 훨씬 명확해졌다.
2. UI보다 상태 관리가 더 중요하다
모달은 결국 상태로 제어하는 UI라는 걸 체감했다.
3. 작은 기능도 구조를 고민해야 한다
삭제, 수정 같은 기능도 구조에 따라 복잡도가 크게 달라진다.
'pgms' 카테고리의 다른 글
| [11주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 51 (0) | 2026.03.28 |
|---|---|
| [11주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 50 (0) | 2026.03.26 |
| [11주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 48 (0) | 2026.03.24 |
| [11주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 47 (0) | 2026.03.23 |
| [10주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 46 (0) | 2026.03.19 |