pro 1.x 里使用

蚂蚁金服用户同学可直接查看 Bigfish 的新增页面

Ant Design pro 是 Ant Design 推出的一个开箱即用的中台前端/设计解决方案。

基本配置请查看 开始使用;

文件路径

Ant Design pro 使用的为 dva 脚手架,文件目录同样为 src/routes, 首先我们需要将下载的 Home 文件包直接复制到 routes 文件夹下。

修改路由

我们提供了两种方案: 1. 直接新增页面。 2. 更改 pro 的主路由。详细请查看下方;

直接新增页面

复制完成后,首页我们在顶部引入 Home, 命名为 IndexPage。

  1. import IndexPage from './routes/Home';

然后在 pro 的路由上添加 Route, 由于 pro 占了 / 主路由,我们将 path 设为 /home 即可。

  1. function RouterConfig({ history, app }) {
  2. const routerData = getRouterData(app);
  3. const UserLayout = routerData['/user'].component;
  4. const BasicLayout = routerData['/'].component;
  5. return (
  6. <LocaleProvider locale={zhCN}>
  7. <ConnectedRouter history={history}>
  8. <Switch>
  9. + <Route path="/home" component={IndexPage} /> {/* 增加在此处 */}
  10. <Route path="/user" component={UserLayout} />
  11. <AuthorizedRoute
  12. path="/"
  13. render={props => <BasicLayout {...props} />}
  14. authority={['admin', 'user']}
  15. redirectPath="/user/login"
  16. />
  17. </Switch>
  18. </ConnectedRouter>
  19. </LocaleProvider>
  20. );
  21. }

更换 pro 的主路由

由于 pro 里没有自定义变量来管理路由,所以需手动修改,首先更改 routerConfig 的路径, 参照以下步骤;

router.js

文件地址: src/common/router.js;

首先需要修改 router.js 里的除 user 相关的地址以外的路径,增加个前辍,如 /dashboards;

  1. const routerConfig = {
  2. + '/dashboards': {
  3. - '/': {
  4. component: dynamicWrapper(app, ['user', 'login'], () => import('../layouts/BasicLayout')),
  5. },
  6. + '/dashboards/dashboard/analysis': {
  7. - '/dashboard/analysis': {
  8. component: dynamicWrapper(app, ['chart'], () => import('../routes/Dashboard/Analysis')),
  9. },
  10. ...

menu.js

文件地址: src/common/menu.js;

将里面的 pathuser 相关的地址以外同样前面加上 dashboards/;

  1. const menuData = [
  2. {
  3. name: 'dashboard',
  4. icon: 'dashboard',
  5. + path: 'dashboards/dashboard',
  6. - path: 'dashboard',
  7. children: [
  8. {
  9. ...

BasicLaout.js

文件地址: src/layout/BasicLaout.js;

getBashRedirect 的路径改为 '/dashboards', 再将 redirctfrom 改为 /dashboards

  1. ...
  2. + item => check(routerData[item].authority, item) && item !== '/dashboards'
  3. - item => check(routerData[item].authority, item) && item !== '/'
  4. ...
  5. + <Redirect exact from="/dashboards" to={bashRedirect} />
  6. - <Redirect exact from="/" to={bashRedirect} />
  7. ...

login.js

文件地址: src/models/login.js;

只需将登录或注册完成后改成 /dashboards 即可;

  1. ...
  2. *login({ payload }, { call, put }) {
  3. const response = yield call(fakeAccountLogin, payload);
  4. yield put({
  5. type: 'changeLoginStatus',
  6. payload: response,
  7. });
  8. // Login successfully
  9. if (response.status === 'ok') {
  10. reloadAuthorized();
  11. + yield put(routerRedux.push('/dashboards'));
  12. - yield put(routerRedux.push('/'));
  13. }
  14. },
  15. ...

在 layouts 下增加自已网站的 layout 文件

文件地址: src/layout/PageLayout.js 新增;

命名为: PageLayout.jsx; 然后在 router.js 上加上 <Route path="/" component={PageLayout} /> layout 上就可以增加网站的内容了。

PageLayout.jsx

  1. import React from 'react';
  2. import Home from '../routes/Home';
  3. export default class LandingLayout extends React.Component {
  4. render(){
  5. return (<Home />);
  6. }
  7. }

router.js

文件地址: src/router.js;

AuthorizedRoute 的 path 改为 /dashboards, 新增 /Route 到自已的 layout 文件, 顺便再新增个 404 路由;

  1. ...
  2. + import NotFound from './routes/Exception/404';
  3. + import PageLayout from './layouts/PageLayout';
  4. ...
  5. + const BasicLayout = routerData['/dashboards'].component;
  6. - const BasicLayout = routerData['/'].component;
  7. ...
  8. + <Route exact path="/" component={PageLayout} />
  9. <Route path="/user" component={UserLayout} />
  10. <AuthorizedRoute
  11. + path="/dashboards"
  12. - path="/"
  13. render={props => <BasicLayout {...props} />}
  14. authority={['admin', 'user']}
  15. redirectPath="/user/login"
  16. />
  17. + <Route render={NotFound} /> {/*增加 404*/}
  18. ...

CSS Modules

具体参考 开如使用里的 global;