reactjs - 在除根以外的所有路由上显示导航组件
问题描述
我需要在除根路线之外的所有路线上显示主导航。如果我要在所有路线上显示,我会这样做:
class App extends Component {
render() {
return (
<Container className="App" maxWidth="lg">
<Grid className="app-container">
<MainNav />
<Switch>
<Route exact path="/" component={Home} />
<Route
exact
path="/some-other-route"
component={SomeOtherComponent}
/>
...
</Switch>
</Grid>
</Container>
);
}
}
我可以为所有其他路线制作一个包装器组件并将其放在那里,但我能想到的任何解决方案似乎都是错误的,可能有更好的方法。有没有更好的办法?
解决方案
也许您可以使用此代码。
下面的代码受到nextjs
页面路由的启发。您只需添加您的路线~/pages/
并动态导入它们。
import React from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
function DynamicRoutes() {
return (
<BrowserRouter>
<Switch>
<Route
path="/"
render={({ history, location, match })=>{
const Page = React.lazy(()=>{
return import('./pages'+location.pathname).catch((e) => {
if (/not find module/.test(e.message)) {
return import("./pages/NotFound");
}
if (/Loading chunk \d+ failed/.test(e.message)) {
window.location.reload();
return;
}
throw e;
})
});
return (
<React.Suspense fallback ={<div>Loading...</div>}>
<Page />
</React.Suspense>
)
}}
/>
</Switch>
</BrowserRouter>
)
}
export default DynamicRoutes;
推荐阅读
- vb.net - 如何压缩多个内存流?
- c++ - 具有非原子大小项目的无锁双端队列
- python - GPT2 聊天机器人单交互...属性错误:“NoneType”对象没有属性“multiprocessing_chunksize”问题:2
- c++ - LLVM 和 Clang 中的入口点文件是什么?
- ms-access - 将布尔值导出到 CSV
- java - “-source 7 不支持 Lambda 表达式,请使用 -source 8 启用 lambda 表达式”
- postgresql - 为 postgresql 和 golang 创建 docker 文件
- oracle - 为什么匿名块的最后一部分需要 BEGIN END(执行部分)?
- python - Python多处理错误
- mongodb - $match a $lookup if pubDate