diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 7476dd7..b98d610 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -4,7 +4,7 @@ // 학습 포인트: 코스 라우트는 여기 일일이 쓰지 않는다 — courseCatalog.jsx의 데이터를 .map으로 돌려 // 자동 생성한다. 코스가 100개가 되어도 이 파일은 그대로다. import { Suspense } from 'react'; -import { Routes, Route, NavLink, Navigate, Outlet, useNavigate } from 'react-router-dom'; +import { Routes, Route, NavLink, Navigate, Outlet, useNavigate, useLocation } from 'react-router-dom'; import { useAuth } from './AuthContext'; import { ALL_COURSES } from './courseCatalog'; import { LEVEL_COURSES } from './levelCatalog'; @@ -53,12 +53,20 @@ function RequireMentor() { return ; } -// 과정(수습용/초급/중급/고급/특급) 선택 셀렉트 박스 — 헤더에 산다. -// 학습 포인트: 바꾸는 순간 학습 센터로 이동한다 — "과정을 골랐으면 그 과정의 강좌를 -// 바로 보여 준다"가 자연스러운 기대이기 때문. 선택은 localStorage에 저장돼 유지된다. +// 과정(수습용/초급/중급/고급/특급) 선택 셀렉트 박스 — 헤더에 살되, +// 학습 센터 영역(/learn…)에 있을 때만 보인다. +// 학습 포인트: 도구는 쓰이는 자리에서만 보여 준다 — 대시보드·과제 화면에서 과정 셀렉트는 +// 지금 하는 일과 무관한 소음이다(관련 없는 선택지는 치우는 게 UI의 배려). +// 바꾸는 순간 학습 센터 허브로 이동하고, 선택은 localStorage에 저장돼 유지된다. function TrackSelect() { const { track, setTrack } = useTrack(); const navigate = useNavigate(); + const location = useLocation(); + + // 학습 센터(/learn, /learn/코스, /learn/코스/quiz) 밖에서는 그리지 않는다. + if (!location.pathname.startsWith('/learn')) { + return null; + } function onChange(e) { setTrack(e.target.value);