IndexRoute

用于给父路由提供默认的子组件,与 <Route> 相比,不能拥有 path 属性。

属性

component { Component }

当匹配到当前路由上时匹配的组件,会被渲染为父组件的 this.props.children

  1. const routes = (
  2. <Route path="/" component={App}>
  3. <IndexRoute component={Groups} />
  4. </Route>
  5. )
  6. class App extends React.Component {
  7. render () {
  8. return (
  9. <div>
  10. {this.props.children}
  11. </div>
  12. )
  13. }
  14. }

components { Object }

可以定义多个命名组件,这样不会直接渲染为父组件的 children,而是当做 props 赋给父组件。

  1. const routes = (
  2. <Route path="/" component={App}>
  3. <IndexRoute components={{main: Groups, sidebar: GroupsSidebar}} />
  4. </Route>
  5. )
  6. class App extends React.Component {
  7. render () {
  8. const { main, sidebar } = this.props
  9. return (
  10. <div>
  11. <div className="Main">
  12. {main}
  13. </div>
  14. <div className="Sidebar">
  15. {sidebar}
  16. </div>
  17. </div>
  18. )
  19. }
  20. }

方法

getComponent

component 类似,异步获取组件,用于进行代码分离。

  1. <IndexRoute getComponent={(nextState, cb) => {
  2. // 异步方法获取组件
  3. cb(null, Course)
  4. }} />

方法参数:

参数名类型描述必选支持版本
nextStateObject
callbackFunction

getComponents

components 类似,异步获取组件,用于进行代码分离。

  1. <IndexRoute getComponents={(nextState, cb) => {
  2. // 异步方法获取组件
  3. cb(null, {sidebar: CourseSidebar, content: Course})
  4. }} />

方法参数:

参数名类型描述必选支持版本
nextStateObject
callbackFunction