前提・実現したいこと
react-router-dom v6でルーティング処理を書いているのですが、思った通りにルーティングができないのでこちらで質問させていただきました。
発生している問題・エラーメッセージ
「http://localhost:3000/home/user_management」にアクセスしても親Routeのオブジェクトがレンダリングされてしまい思っている子Routeのオブジェクトがレンダリングされないという事象に陥っています。
子Routeのオブジェクト: <UserManegement /> or <Setting />
親Routeのオブジェクト: <Home />
該当のソースコード
Router.tsx
typescript
1import { memo, VFC } from "react"; 2import { Route, Routes } from "react-router-dom"; 3 4import { Login } from "../components/pages/Login"; 5import { homeRoutes } from "./HomeRoutes"; 6import { Home } from "../components/pages/Home"; 7import { Page404 } from "../components/pages/Page404"; 8import { HeaderLayout } from "../components/templates/HeaderLayout"; 9 10export const Router: VFC = memo(() => { 11 return ( 12 <Routes> 13 <Route path="/" element={<Login />} /> 14 <Route path="home" element={<HeaderLayout><Home /></HeaderLayout>} > 15 { 16 homeRoutes.map((route, index) => ( 17 <Route path={route.path} element={<HeaderLayout>{route.children}</HeaderLayout>} /> 18 )) 19 } 20 </Route> 21 <Route path="*" element={<Page404 />} /> 22 </Routes> 23 ) 24})
HomeRoutes.tsx
typescript
1import { UserManegement } from "../components/pages/UserManegement" 2import { Setting } from "../components/pages/Setting" 3 4export const homeRoutes = [ 5 { 6 path: "user_management", 7 children: <UserManegement /> 8 }, 9 { 10 path: "setting", 11 children: <Setting /> 12 } 13]
自分で調べたことや試したこと
ネストせずに書いた場合はちゃんと想定している通りにルーティングが動いているのでルーティング先のオブジェクトが悪いといったわけではないことは確認しています。
※「<UserManegement />」、「<Setting />」も含めて
ネストしたバージョン
http://localhost:3000/ → 「<Login />」がレンダリングされる
http://localhost:3000/home/ → 「<Login />」がレンダリングされる
typescript
1<Route path="/" element={<Login />} > 2 <Route path="home" element={<Home />} /> 3</Route >
ネストしなかったバージョン
http://localhost:3000/ → 「<Login />」がレンダリングされる
http://localhost:3000/home/ → 「<Home />」がレンダリングされる
typescript
1<Route path="/" element={<Login />} /> 2<Route path="/home" element={<Home />} />
使っているツールのバージョンなど補足情報
package-lock.jsonの一部抜粋
json
1"dependencies": { 2 "@chakra-ui/react": "^1.7.4", 3 "@emotion/react": "^11.7.1", 4 "@emotion/styled": "^11.6.0", 5 "@testing-library/jest-dom": "^5.16.1", 6 "@testing-library/react": "^12.1.2", 7 "@testing-library/user-event": "^13.5.0", 8 "@types/jest": "^27.4.0", 9 "@types/node": "^16.11.21", 10 "@types/react": "^17.0.38", 11 "@types/react-dom": "^17.0.11", 12 "framer-motion": "^5.6.0", 13 "react": "^17.0.2", 14 "react-dom": "^17.0.2", 15 "react-router-dom": "^6.2.1", 16 "react-scripts": "5.0.0", 17 "typescript": "^4.5.5", 18 "web-vitals": "^2.1.4" 19 }

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。