【问题标题】:Default component in nested routes in React RouterReact Router 中嵌套路由中的默认组件
【发布时间】:2017-03-07 23:34:27
【问题描述】:

在 React Router 中我有一个嵌套路由

<Route path='about' component={{main: About, header: Header}}>
  <Route path='team' component={Team} />
</Route>

所以现在当我转到 /about/team 时它会显示团队。

但是如何设置访问/about时看到哪个组件呢?

我试过了

<Route path='about' component={{main: About, header: Header}}>
  <IndexRoute component={AboutIndex} />
  <Route path='team' component={Team} />
</Route>

<Route path='about' component={{main: About, header: Header}}>
  <Route path='/' component={AboutIndex} />
  <Route path='team' component={Team} />
</Route>

但它不起作用。

我的 About 组件如下所示

class About extends React.Component {
  render () {
    return (
      <div>
        <div className='row'>
          <div className='col-md-9'>
            {this.props.children}
          </div>
          <div className='col-md-3'>
            <ul className='nav nav-pills nav-stacked'>
              <li className='nav-item'><IndexLink className='nav-link' to='/about' activeClassName='active'>About</IndexLink></li>
              <li className='nav-item'><Link className='nav-link' to='/about/team'>Team</Link></li>
            </ul>
          </div>
        </div>
      </div>
    );
  }
}

【问题讨论】:

    标签: javascript reactjs react-router react-jsx jsx


    【解决方案1】:

    反应路由器 4 更新

    默认路由是没有路径的。

    import BrowserRouter from 'react-router-dom/BrowserRouter';
    import Switch from 'react-router-dom/Switch';
    import Route from 'react-router-dom/Route';
    
    <BrowserRouter>
      <Switch>
        <Route exact path='/about' component={AboutIndex} />
        <Route component={AboutIndex} /> // <--- don't add a path for a default route
      </Switch>
    </BrowserRouter>
    

    如果您的组件中不需要此对象{main: About, header: Header},则只需将 AboutIndex 放在组件属性中。应该可以的

    <Router history={browserHistory}>
      <Route path='about' component={AboutIndex}>
        <IndexRoute component={AboutIndex} />
        <Route path='team' component={Team} />
      </Route>
    </Router>
    

    如果您仍然需要主组件和标题组件,只需根据您的需要将它们添加为父组件、子组件或兄弟组件

    【讨论】:

    • 你是什么意思?我确实需要它们
    • {main: About, header: Header}的用途是什么?如果它们只是子组件,请将它们放在您的 about 组件中。如果 'About' 是父组件,则将其放在组件属性中代替 'AboutIndex' 并在 'About' 组件内添加 'AboutIndex'。
    猜你喜欢
    • 2015-02-21
    • 2023-02-21
    • 1970-01-01
    • 2021-12-30
    • 2017-06-25
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    相关资源
    最近更新 更多