router.js 1.2 KB

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