UNPKG

1.29 kBJavaScriptView Raw
1import RootComponent from './RootComponent'
2
3export default class ReactRouter {
4
5 constructor() {
6 this.rootRouter = {
7 path: '/',
8 component: RootComponent,
9 childRoutes: []
10 }
11 }
12
13 add(router) {
14 this.rootRouter.childRoutes.push(router)
15 }
16
17 get() {
18 let routes = [this.rootRouter]
19 routes.forEach(handleIndexRoute)
20 return routes
21 }
22
23}
24
25
26
27/**
28 * 处理默认路由
29 *
30 * @param {any} route
31 */
32function handleIndexRoute(route) {
33 if (!route.childRoutes || !route.childRoutes.length) {
34 return
35 }
36
37 route.childRoutes = route.childRoutes.filter(child => { // eslint-disable-line
38 if (child.isIndex) {
39
40 /* istanbul ignore next */
41 if (process.env.NODE_ENV === 'dev' && route.indexRoute) {
42 console.error('More than one index route: ', route)
43 }
44
45 /* istanbul ignore else */
46 if (!route.indexRoute) {
47 delete child.path; // eslint-disable-line
48 route.indexRoute = child; // eslint-disable-line
49 return false
50 }
51 }
52 return true
53 })
54
55 route.childRoutes.forEach(handleIndexRoute)
56}
\No newline at end of file