【问题标题】:React Router V4 Routers with Master Pages / Templates带有母版页/模板的 React Router V4 路由器
【发布时间】:2018-06-28 14:30:23
【问题描述】:

我对做出反应并尝试创建具有 2 种设计的应用程序比较陌生。一种是具有公共页眉和页脚的公共站点,以及具有管理页眉和侧栏的内部应用程序。我创建了一个路由器和 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>

    )
  }
}
...

谢谢,如果有人能告诉我或指出一个好的资源,我将不胜感激!

【问题讨论】:

    标签: javascript reactjs react-router


    【解决方案1】:

    你真的很亲密!您需要做的实际上是将模板组件作为父组件而不是 &lt;Route /&gt; 组件。子组件是其开始标签和结束标签之间的组件。继续装车!

    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>
           );
         }
       }
    

    【讨论】:

    • 太棒了!非常感谢!
    • @Djtouchette 我有一个类似的设置,我用受保护的路由尝试了你的解决方案,但无法让它工作。我可以给你发一个问题的链接吗?
    猜你喜欢
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2019-06-15
    相关资源
    最近更新 更多