javascript - 反应应用程序中是否可以有多个 BrowserRouter
问题描述
我有一个场景,我想在现有的 react 应用程序中有 2 个不同的 UI。V1 (versions1) 将具有不同的 UI,V2 (versions2) 将具有不同的 UI。
现有的实现如下所示,
<BrowserRouter basename=“/us”>
<Version1Layout>
<Switch>
<Route exact={true} path=“/” component={Home} />
<Route exact={true} path=“/about” component={About} />
</Switch>
</Version1Layout>
</BrowserRouter >
但我想要这样的东西: -
<div>
<BrowserRouter basename=“/us/v1”>
<Version1Layout>
<Switch>
<Route exact={true} path=“/” component={Home} />
<Route exact={true} path=“/about” component={About} />
</Switch>
</Version1Layout>
</BrowserRouter>
<BrowserRouter basename=“/us/v2”>
<Version2Layout>
<Switch>
<Route exact={true} path=“/report1” component={ReportView1} />
<Route exact={true} path=“/report2” component={ReportView2} />
</Switch>
</Version2Layout>
</BrowserRouter>
</div>
是否可以有多个 BrowserRouter 并行?
解决方案
您不需要并行使用它们:
<div>
<BrowserRouter basename=“/us”>
<Switch>
<Version1Layout path={'/v1'}>
<Switch>
<Route exact={true} path=“/” component={Home} />
<Route exact={true} path=“/about” component={About} />
</Switch>
</Version1Layout>
<Version2Layout path={'/v2'}>
<Switch>
<Route exact={true} path=“/report1” component={ReportView1} />
<Route exact={true} path=“/report2” component={ReportView2} />
</Switch>
</Version2Layout>
<Redirect to={'/v1'}/>
</Switch>
</BrowserRouter>
</div>
巧妙的Switch
是,它只呈现具有匹配path
道具的第一个组件 - 你不需要使用Route
's.
推荐阅读
- php - php date() 返回特定月份的错误月份
- c++ - 时钟函数返回零时差
- angular - 角度对话框参数
- javascript - 我怎样才能正确地去抖动firebase云功能的执行
- python - mnist 数据集上 GAN 的 mnist-score 返回 [batch, 10] 的 logits 张量
- javascript - 按下按钮时向服务器发送数据
- java - 随机化 arrayList 的顺序
- c# - 如何将两个元素绑定到一个链接按钮 ASP.NET
- json - 如何在 Angular 5 中使用嵌套的 JSON 数据填充多级 KendoTree 视图
- python-3.x - 无法将进度条颜色从 tkinter 更改为红色