router.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import React from 'react';
  2. import { Router, Route, Redirect } from 'dva/router';
  3. import navData from './common/nav';
  4. function getRoutes(data, level = 0) {
  5. return data.map((item, i) => {
  6. let children;
  7. if (item.children) {
  8. children = getRoutes(item.children, level + 1);
  9. }
  10. let homePageRedirect;
  11. if (level === 1 && i === 0) {
  12. let indexPath;
  13. // First children router
  14. if (item.children && item.children[0]) {
  15. indexPath = `/${item.path}/${item.children[0].path}`;
  16. } else {
  17. indexPath = item.path;
  18. }
  19. homePageRedirect = <Redirect from="/" to={indexPath} />;
  20. }
  21. if (item.noRoute) {
  22. return null;
  23. }
  24. return (
  25. <Route
  26. key={item.key || item.path || ''}
  27. path={item.path}
  28. breadcrumbName={item.name}
  29. component={item.component}
  30. >
  31. {homePageRedirect}
  32. {children}
  33. </Route>
  34. );
  35. });
  36. }
  37. function RouterConfig({ history }) {
  38. return (
  39. <Router history={history}>
  40. {getRoutes(navData)}
  41. </Router>
  42. );
  43. }
  44. export default RouterConfig;