reactjs - React Routes v4 的行为因索引而异
问题描述
这是我想要创建的布局
Login => '/login'
Main => '/'
=> Home => '/'
=> Pageone = '/pageone'
=> Pagetwo = '/pagetwo'
这是我试图这样做的代码
<BrowserRouter>
<Switch>
<Main>
<Route exact path='/' component={Home} />
<Route path='/pageone' component={PageOne}/>
<Route path='/pagetwo' component={PageTwo}/>
</Main>
<Route path="/login" component={Login}/>
</Switch>
</BrowserRouter>
虽然不使用Switch
嵌套路由效果很好,但Main
即使Login
在使用exact
. 使用时Switch
,导航到嵌套路由显示空白页面,但外部路由运行良好。
但是只需将顶部更改<Route path="/login" component={Login}/>
为顶部即可使everythigg 完美运行
<BrowserRouter>
<Switch>
<Route path="/login" component={Login}/>
<Main>
<Route exact path='/' component={Home} />
<Route path='/pageone' component={PageOne}/>
<Route path='/pagetwo' component={PageTwo}/>
</Main>
</Switch>
</BrowserRouter>
这是预期的行为还是错误?
Main
组件内容
<div>
<NavBar ></NavBar>
{this.props.children}
<FooTer></FooTer>
</div>
这是我的依赖项
"bootstrap": "^4.2.1",
"classnames": "^2.2.6",
"react": "^16.7.0",
"react-dom": "^16.7.0",
"react-materialize": "^2.6.0",
"react-router-dom": "^4.3.1",
"react-scripts": "2.1.3"
解决方案
的预期行为Switch
是只渲染一个匹配的路由。仅将互斥路线放入其中。阅读您的问题,我认为这些路线并不完全独立。例如,路线中存在的一些内容可能/
也需要在其他路线中显示。要做到这一点,你可以试试这个 -
<BrowserRouter>
{/* Shared content in this route. This is always matched and rendered. */}
<Route path="/" component={SharedChrome} />
<Switch>
<Route path="/" component={Home} />
<Route path='/pageone' component={PageOne}/>
<Route path='/pagetwo' component={PageTwo}/>
<Route path="/login" component={Login}/>
</Switch>
</BrowserRouter>
并修改内部路由的组件中的内容,Switch
使其不具有将由SharedChrome
组件呈现的共享内容。
推荐阅读
- sql - 如何编写 sql 以获取该日期 20 到 35 之间的所有用户?
- postgresql - 加载地图图层“默认”时出错:Shape Plugin: shapefile 'true.shp' 不存在
- docker - 当我在 Azure Devops YAML 管道上执行 docker build 命令时,我的 Dockerfile 中指定的 ARG 似乎不起作用
- python - 将 str 中的数字从 readlines 转换为数字 - python
- python - Resetting Index in a Dataframe drops the Indexed column by 1 row
- python - 在 Python 中使用请求保存页面内容
- python - 使用 python 在文档中引用的不同年份数
- postgresql - 如何在模式之间同步 PostgreSQL 数据库结构
- python - 关于选择两个列表的最佳选项的建议(最小和最大)python
- java - 如何在 spark 中指定 ALS 工作线程的数量?