我是一个相对较新的反应者,它试图创建一个具有两种设计的应用。一个是具有公共页眉和页脚的公共站点,以及具有管理页眉和侧边栏的内部应用程序。我创建了一个路由器和2条主要路线“ /”和“ / app”。然后,我添加了子路由,希望如果匹配了父路由器,它将显示父组件并将子路由的组件作为this.props.children传递。我似乎做错了。这是我创建的。
App.js:
...
class App extends Component {
render() {
return (
<Router>
<Switch>
<Route component={Public}>
<Route exact path="/" component={Home}/>
<Route path="/login" component={Login}/>
</Route>
<Route component={Main}>
<Route path="/dash" component={Dash}/>
<Route path="/people" component={People}/>
</Route>
</Switch>
</Router>
);
}
}
...
公共“模板”:
...
render(){
return(
<div>
I am a public page
{this.props.children}
</div>
)
}
...
Home.js
...
class Home extends Component{
render(){
return(
<div>I am the home page</div>
)
}
}
...
应用“模板”
...
class Main extends Component{
render(){
return(
<div>
<Header />
<div>I am an app page</div>
{this.props.children}
<Footer/>
</div>
)
}
}
...
Dash.js
...
class Dash extends Component{
render(){
return(
<div>I am the dash page</div>
)
}
}
...
谢谢,如果有人可以告诉我或指向我提供好的资源,我将不胜感激!
答案 0 :(得分:4)
您真的很亲密!实际上,您需要做的是将模板组件作为父项放置在<Route />
组件中。子组件是其开始和结束标记之间的组件。继续卡车!
class App extends Component {
render() {
return (
<Router>
<Switch>
<Public>
<Route exact path="/" component={Home}/>
<Route path="/login" component={Login}/>
</Public >
<Main>
<Route path="/dash" component={Dash}/>
<Route path="/people" component={People}/>
</Main>
</Switch>
</Router>
);
}
}