如何使用嵌套路由和私有路由组件在 react.js 中正确构建路由?

Posted

技术标签:

【中文标题】如何使用嵌套路由和私有路由组件在 react.js 中正确构建路由?【英文标题】:How to properly structure routes in react.js using nested routes along with private route component? 【发布时间】:2019-05-30 06:17:44 【问题描述】:

我正在使用 react-router-dom。目前我有一个 app.js 文件,其中包含如下内容:

<BrowserRouter>
    <div className="App container">

        <Header/>

        <Switch>
            <Route exact path='/' component=Dashboard/>
            <Route path='/profile' component=Profile/>
        </Switch>

    </div>
 </BrowserRouter>

所以,我有一个始终在页面上的标题组件,以及两个组件的路由,仪表板和配置文件。现在,我想添加只有一个登录组件(没有标题组件)的新页面“登录”。像这样的:

<BrowserRouter>
    <div className="App container">

        <Switch>
            <Route path='/login' component=Login/>

            <Route path='/'>

                <Header/>

                 <Switch>
                     <Route exact path='/' component=Dashboard/>
                     <Route path='/profile' component=Profile/>
                 </Switch>

            </Route>
        </Switch>
    </div>
 </BrowserRouter>

最后一步是用私有路由组件替换路由组件。

【问题讨论】:

【参考方案1】:

私人路线是什么意思? 对于没有标题的登录页面,请使用 React 片段

<Switch>
    <Route path='/login' component=LoginComponent /> /* <--- No header */
    <Fragment>
        <Header/>
        <Route exact path='/' component=Dashboard/>
        <Route path='/profile' component=Profile/>
    </Fragment>
</Switch>

【讨论】:

谢谢,但我需要将 Fragment 中的两条路线包装成另一个开关,以使其按预期工作。有没有更流畅的方法?

以上是关于如何使用嵌套路由和私有路由组件在 react.js 中正确构建路由?的主要内容,如果未能解决你的问题,请参考以下文章

如何在react js中的onclick事件上隐藏和显示路由器组件

如何通过链接和路由传递道具/状态 - react.js

React js在重定向到新路由后显示通知

react JS中的私有路由jsx

如何将从 API 获取的数据作为道具传递给其路由在 React JS 的另一个页面中定义的组件?

如何使用 Apollo 和 React Router 避免嵌套路由/查询组件的请求瀑布?