Skip to content

라우터를 객체 배열(createBrowserRouter) 구조로 전환 #34

Description

@sangrae2325

어떤 기능인가요?

지금은 <BrowserRouter> + <Routes> 구조라서, 레이아웃(ScreenLayout)이 화면마다 다른 prop(hasBottomNav)을 받으려면 레이아웃 라우트를 따로 두 번 선언해야 한다. 같은 레이아웃을 중복 선언하는 데다, 탭 화면과 신청 화면을 오갈 때 레이아웃이 통째로 다시 마운트된다.

라우트를 createBrowserRouter 객체 배열 한곳에서 정의하고, 레이아웃 라우트는 한 번만 선언한다. 화면별 옵션은 라우트의 handle에 두고, ScreenLayout은 지금처럼 prop(hasBottomNav)으로 받는 구조를 유지한다.

계획: docs/plans/router-object-routes.md (로컬 전용 문서, 저장소에는 안 올라감)
베이스 브랜치: main

📝 작업 상세 내용

  • BrowserRoutercreateBrowserRouter + RouterProvider로 전환 — src/app/router.tsx에 현재 라우트 구조를 그대로 객체 배열로 옮기고, App.tsx는 가운데 정렬 루트 레이아웃(Outlet)만 남김
  • 라우트 handle로 하단 탭 표시 여부를 정하고 레이아웃 라우트를 하나로 통합 — ScreenRouteHandle 타입(satisfies로 선언 시점 검사), 타입 가드, 연결 컴포넌트 src/app/ScreenLayoutRoute.tsx
  • 없는 경로에 하단 탭이 유지되는 "준비 중" 화면 추가 (path: "*") — 지금 하단 탭 "행사"(/event)·"게시판"(/board) 클릭 시 빈 화면 해결
  • coding-style.md에 "라우팅" 절 추가 (라우트 추가 위치, handle 지정 방법, 없는 경로 처리)
  • 브라우저 동작 확인 — 하단 탭 표시/숨김, 탭 화면↔신청 화면 이동 시 레이아웃 재마운트 없음, 홈 링크·바텀시트·뒤로가기, 없는 경로

제외: ScreenLayout 고정 프레임 해제(#30), 하단 탭 경로 정리(/event/events 등, #27·#15), loader/lazy 도입

📁 참고 자료 (선택)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions