공지사항 페이지 기능 정리
1. 검색 조건(q) 및 현재 페이지(page) 유지 처리
- 상세 페이지 진입 시 URL에 다음 파라미터를 포함:
noticeSeqno: 글 번호page: 현재 페이지q: 검색 조건(JSON 직렬화 후 encodeURIComponent 처리)
- 예시:
router.push( `/user/notice/detail?noticeSeqno=${row.noticeSeqno}&page=${currentPage}&q=${encodeURIComponent(JSON.stringify(serializeSearchFormToJson(searchFormRef)))}` );
2. 상세 페이지에서 목록 페이지로 돌아갈 때 검색 & 페이지 복원
- 디테일 페이지에서 목록 버튼 클릭 시:
const page = searchParams.get("page") || "1"; const q = searchParams.get("q") || ""; router.push(`/user/notice/list?page=${page}&q=${q}`);
3. useEffect의 자동 재조회 로직 제거
- 페이지 번호만 바뀌었을 때 목록 자동 조회 로직(useEffect)을 제거함으로써, 쿼리스트링 기반으로 fetchFindList 호출 타이밍 제어 가능
- 예전 코드:
useEffect(() => { fetchFindList(currentPage); }, [currentPage, resetTrigger]); - → 위 로직 제거하고,
router.push후 직접 fetchFindList 호출하도록 변경
4. @NotBlank 이슈 (제목, 내용 공백 허용 문제)
- 디테일 페이지 접근 시
@NotBlank제약이 걸린 필드들이 null이어서 예외 발생 - 임시 해결책:
- form에
<input type="hidden" name="noticeTitle" value="..." />등 추가 - 그러나 onSubmit이 없는 상태라 바로 넘어가지 않음
- 정석적 접근은 상세 조회용 DTO와 등록/수정용 DTO를 분리
- form에
5. 기타 개선사항
- 상세 페이지에서도
page와q유지하도록 수정 페이지 이동 시 포함 - 예:
router.push( `/admin/notice/edit?noticeSeqno=${row.noticeSeqno}&page=${currentPage}&q=${q}` );
마무리
오늘 작업은 "검색 조건 및 페이지 유지 흐름 개선", "디테일/수정/목록 간 연동 안정화", "불 필요한 useEffect 제거" 중심으로 진행하였으며, 흔하게 겪는 UX 문제 해결 경험으로 매우 중요하다 생각 합니다.
'Front-End - Main Menu > React (Next.js)' 카테고리의 다른 글
| [Next.js] - 관리자 페이지 메뉴 셀렉트 기능 구현 하기 (0) | 2025.09.02 |
|---|---|
| [Next.js] - React에서 key 변경으로 인한 input blur 문제 해결 (0) | 2025.09.02 |
| [NEXT.JS] - 고유키 2개일때 합쳐서 리스트 출력하는 방법 (0) | 2025.06.10 |
| [React.js] useEffect로 불필요하게 두 번 이상 실행되어 API가 중복 호출되는 문제 해결하기 (feat. MyApp 프로젝트) (1) | 2025.03.14 |
| [React.ts] 라우터 기본 개념 (0) | 2025.01.16 |