使用原生 JavaScript 进行路由定义。<Router> 组件将 JSX 语法的 <Route> 转化为原生对象,但是我们也可以直接使用原生对象来配置。属性与 <Route> 组件大致相同,除了以下动态获取自路由的部分:

属性

childRoutes

子路由数组,与 JSX 路由的 children 属性相同。

getChildRoutes(nextState, callback)

childRoutes 相同,但异步子路由,用于代码分离。

callback 回调

cb(err, routesArray)

  1. // 同步方式获取子路由
  2. let myRoute = {
  3. path: 'course/:courseId',
  4. childRoutes: [
  5. announcementsRoute,
  6. gradesRoute,
  7. assignmentsRoute
  8. ]
  9. }
  10. // 异步方式获取子路由
  11. let myRoute = {
  12. path: 'course/:courseId',
  13. getChildRoutes(nextState, cb) {
  14. cb(null, [ announcementsRoute, gradesRoute, assignmentsRoute ])
  15. }
  16. }

indexRoute

与使用 JSX 路由配置语法指定 <IndexRoute> 作用相同。

getIndexRoute(nextState, callback)

getChildRoutes 类似,用于代码分离和动态路由加载。

callback 回调

cb(err, route)

  1. // 同步获取
  2. let myIndexRoute = {
  3. component: MyIndex
  4. }
  5. // 使用 indexRoute
  6. let myRoute = {
  7. path: 'courses',
  8. indexRoute: myIndexRoute
  9. }
  10. // 异步首页路由
  11. let myRoute = {
  12. path: 'courses',
  13. getIndexRoute(nextState, cb) {
  14. // 异步处理
  15. cb(null, myIndexRoute)
  16. }
  17. }