我有一个React组件App
,它是<Router>
的子组件。在App
内,我使用<Switch>
和<Route>
组件根据网址路径呈现不同的组件。
我知道<Switch>
的作用是渲染(仅)第一个匹配的<Route>
组件。
我的App
的渲染功能如下所示。
return (
<Switch>
<Route path='/somepath' component={SomeComponent} />
<Route path='/someotherpath' component={SomeOtherComponent} />
<Main>
<Route path='/anotherpath' component={AnotherComponent} />
<Route component={DefaultComponent} />
</Main>
</Switch>
);
我遇到的问题是,当我渲染AnotherComponent
时,DefaultComponent
也会被渲染。
目前,似乎将<Main>
中的路由包装到另一个<Switch>
组件中将强制执行切换行为。例如,
<Main>
<Switch>
<Route path='/anotherpath' component={AnotherComponent} />
<Route component={DefaultComponent} />
</Switch>
</Main>
那么,像我一样嵌套<Switch>
组件是一种好习惯吗?是否有更优雅的方法来实现这一目标?