【发布时间】:2022-01-22 04:41:21
【问题描述】:
我是 React 新手,在 main.tsx(由 Nx 生成的应用程序)中有此路由配置:
ReactDOM.render(
<StrictMode>
<IocContainerProvider container={container}>
<Provider store={store}>
<BrowserRouter>
<Routes>
<Route path="//*" element={<App />}></Route>
{/* <Route path="/app/*" element={<App />}></Route> */}
<Route path="login" element={<Login />}></Route>
<Route path="*" element={<PageNotFound />} />
</Routes>
</BrowserRouter>
</Provider>
</IocContainerProvider>
</StrictMode>,
document.getElementById('root')
);
然后在 App-Component 中:
export function App() {
const navbarState = useSelector((state: AppState) => state.navbar);
return (
<>
<Sidebar></Sidebar>
<main className="main-content position-relative max-height-vh-100 h-100 border-radius-lg ">
<Navbar currentPageName={navbarState.currentPath}></Navbar>
<div className="container-fluid py-4">
<Routes>
<Route path="/" element={<Dashboard />} />
<Route path="/incomes" element={<Incomes />} />
<Route path="*" element={<PageNotFound />} />
</Routes>
<Footer></Footer>
</div>
</main>
</>
);
}
export default App;
使用<Route path="//*" element={<App />}></Route>的结果:
- 通过 http://localhost:4200/ ==> 导航到仪表板工作
- 通过以下方式导航到登录:http://localhost:4200/login ==> 有效
- 通过以下方式导航到收入:http://localhost:4200/incomes ==> PageNotFound
使用<Route path="/app/*" element={<App />}></Route>的结果:
- 通过以下方式导航到仪表板:http://localhost:4200/app ==> 有效
- 通过以下方式导航到登录:http://localhost:4200/login ==> 有效
- 通过以下方式导航到收入:http://localhost:4200/app/incomes ==> 工作
我不想在此处使用“/app/*”前缀来导航到“收入组件”。我该如何解决这个问题?
【问题讨论】:
-
你能多解释一下你想要实现什么吗?我不明白你的目的是什么,什么不起作用
-
您好,我想以嵌套路由的形式导航到收入组件。关键是如果我不在 main.tsx 父路由中使用 /app/* 前缀,那么它就不起作用。
标签: reactjs react-router react-router-dom