我目前正在使用react router v4进行嵌套路由.
最接近的示例是React-Router v4文档中的路由配置 .
我想将我的应用程序拆分为两个不同的部分.
前端和管理区域.
我在考虑这样的事情:
<Match pattern="/" component={Frontpage}>
<Match pattern="/home" component={HomePage} />
<Match pattern="/about" component={AboutPage} />
</Match>
<Match pattern="/admin" component={Backend}>
<Match pattern="/home" component={Dashboard} />
<Match pattern="/users" component={UserPage} />
</Match>
<Miss component={NotFoundPage} />
Run Code Online (Sandbox Code Playgroud)
前端具有与管理区域不同的布局和样式.因此,在首页的路线回家,约一个应该是儿童路线.
/ home应该呈现在Frontpage组件中,而/ admin/home应该在Backend组件中呈现.
我尝试了一些变化,但我总是在没有击中/ home或/ admin/home.
编辑 - 19.04.2017
因为这篇文章现在有很多观点我用最终解决方案更新了它.我希望它对某人有帮助.
编辑 - 08.05.2017
删除旧解决方案
最终解决方案
这是我现在使用的最终解决方案.此示例还有一个全局错误组件,如传统的404页面.
import React, { Component } from 'react';
import { Switch, Route, Redirect, Link } from 'react-router-dom';
const Home = () => <div><h1>Home</h1></div>; …Run Code Online (Sandbox Code Playgroud) 有没有办法在React Router v4中嵌套路由?
这有效:
<Router basename='/app'>
<main>
<Route path='/' component={AppBar} />
<Route path='/customers' component={Customers} />
</main>
</Router>
Run Code Online (Sandbox Code Playgroud)
这不是:
<Router basename='/app'>
<Route path='/' component={AppBar}>
<Route path='/customers' component={Customers} />
</Route>
</Router>
Run Code Online (Sandbox Code Playgroud)
客户组件:
import React, { Component, PropTypes } from 'react'
import styled from 'styled-components'
export default class Customers extends Component {
render () {
return (
<Container>
<h1>Customers</h1>
</Container>
)
}
}
const Container = styled.section`
height: 100%;
padding: 15px;
overflow: auto;
`
Run Code Online (Sandbox Code Playgroud) 如果我有以下内容:
<Route path="/" component={Containers.App}>
{ /* Routes that use layout 1 */ }
<IndexRoute component={Containers.Home}/>
<Route path="about" component={Containers.About}/>
<Route path="faq" component={Containers.Faq}/>
<Route path="etc" component={Containers.Etc}/>
{ /* Routes that use layout 2 */ }
<Route path="products" component={Containers.Products}/>
<Route path="gallery" component={Containers.Gallery}/>
</Route>
Run Code Online (Sandbox Code Playgroud)
我怎样才能使两组路线各自使用不同的布局.
如果我只有一个布局,那么我会把它放在App中,但在这种情况下,我在哪里定义布局?
为了使其更复杂,一些布局组件(例如顶部导航)在两种布局类型之间共享.