反应路由器,<switch>结构

时间:2018-01-28 17:39:12

标签: react-router react-router-dom

我有一个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>组件是一种好习惯吗?是否有更优雅的方法来实现这一目标?

0 个答案:

没有答案