/main
) 하나에서 Sales 모드가 되는 /main/sales
와 Factory 모드가 되는 /main/factory
2가지 모드가 있음/main
페이지로 들어가면 처음에는 기본적으로 Sales 모드(/main/sales
)가 됨/main/factory
페이지로 이동/main/sales
페이지로 이동, 새로고침, Main이 아닌 다른 페이지로 이동 후 다시 돌아왔을 때의 라우팅이 잘 되지 않음react-router-dom V6의 중첩 라우팅을 사용했다.
Router.tsx
)sales
, factory
(/main
을 기점으로 한 상대 경로 설정)<Route path="/main" element={<Main />}>
<Route path="sales" element={<Sales />} />
<Route path="factory" element={<Factory />} />
</Route>
/Main/index.tsx
)/main/factory
경로가 아니면 무조건 /main/sales
경로로 이동하도록 처리/main/factory
경로로 이동할 때는 왼쪽 상단 셀렉터에서 'Factory'를 선택했을 때 뿐임<Outlet />
을 반환하여 Main 컴포넌트 마무리import { useEffect } from "react";
import { Outlet, useLocation, useNavigate } from "react-router-dom";
const FACTORY_ROUTE = "/main/factory";
const SALES_ROUTE = "/main/sales";
const Main = () => {
const navigate = useNavigate();
const { pathname } = useLocation();
useEffect(() => {
if (pathname !== FACTORY_ROUTE) {
navigate(SALES_ROUTE, { replace: true });
}
}, [pathname]);
return <Outlet />;
};
export default Main;
위의 경로 문제가 모두 수정되었다.
/main
을 들어가면 /main/sales
로 바로 이동하고,/main/sales
)에서 셀렉터를 통해 Factory 모드로 이동하면 /main/factory
경로로 이동,