tuns-mobile-components
Version:
Tuns Design UI
175 lines (166 loc) • 4.46 kB
JavaScript
import React from 'react';
import {
Router as DefaultRouter,
Route,
Switch,
StaticRouter,
} from 'react-router-dom';
import dynamic from 'umi/dynamic';
import renderRoutes from 'umi/lib/renderRoutes';
import history from '@@/history';
const Router = require('dva/router').routerRedux.ConnectedRouter;
const routes = [
{
path: '/',
component: require('../../layouts/index.js').default,
routes: [
{
path: '/demo/async',
exact: true,
component: require('../demo/async/index.js').default,
},
{
path: '/demo/async/service',
exact: true,
component: require('../demo/async/service/index.js').default,
},
{
path: '/demo/bottom',
exact: true,
component: require('../demo/bottom/index.js').default,
},
{
path: '/demo/customtext',
exact: true,
component: require('../demo/customtext/index.js').default,
},
{
path: '/demo/evaluatedemo',
exact: true,
component: require('../demo/evaluatedemo/index.js').default,
},
{
path: '/demo/form',
exact: true,
component: require('../demo/form/index.js').default,
},
{
path: '/demo/gridpick',
exact: true,
component: require('../demo/gridpick/index.js').default,
},
{
path: '/demo/icons',
exact: true,
component: require('../demo/icons/index.js').default,
},
{
path: '/demo',
exact: true,
component: require('../demo/index.js').default,
},
{
path: '/demo/listcard',
exact: true,
component: require('../demo/listcard/index.js').default,
},
{
path: '/demo/listscroll',
exact: true,
component: require('../demo/listscroll/index.js').default,
},
{
path: '/demo/map',
exact: true,
component: require('../demo/map/index.js').default,
},
{
path: '/demo/noticebar',
exact: true,
component: require('../demo/noticebar/index.js').default,
},
{
path: '/demo/order',
exact: true,
component: require('../demo/order/index.js').default,
},
{
path: '/demo/orderbutton',
exact: true,
component: require('../demo/orderbutton/index.js').default,
},
{
path: '/demo/recommendcard',
exact: true,
component: require('../demo/recommendcard/index.js').default,
},
{
path: '/demo/resultcard',
exact: true,
component: require('../demo/resultcard/index.js').default,
},
{
path: '/demo/table',
exact: true,
component: require('../demo/table/index.js').default,
},
{
path: '/demo/tabs',
exact: true,
component: require('../demo/tabs/index.js').default,
},
{
path: '/demo/tree',
exact: true,
component: require('../demo/tree/index.js').default,
},
{
path: '/demo/utils',
exact: true,
component: require('../demo/utils/index.js').default,
},
{
path: '/',
exact: true,
component: require('../index.js').default,
},
],
},
];
window.g_routes = routes;
const plugins = require('umi/_runtimePlugin');
plugins.applyForEach('patchRoutes', { initialValue: routes });
export { routes };
export default class RouterWrapper extends React.Component {
unListen() {}
constructor(props) {
super(props);
// route change handler
function routeChangeHandler(location, action) {
plugins.applyForEach('onRouteChange', {
initialValue: {
routes,
location,
action,
},
});
}
this.unListen = history.listen(routeChangeHandler);
// dva 中 history.listen 会初始执行一次
// 这里排除掉 dva 的场景,可以避免 onRouteChange 在启用 dva 后的初始加载时被多执行一次
const isDva =
history.listen
.toString()
.indexOf('callback(history.location, history.action)') > -1;
if (!isDva) {
routeChangeHandler(history.location);
}
}
componentWillUnmount() {
this.unListen();
}
render() {
const props = this.props || {};
return <Router history={history}>{renderRoutes(routes, props)}</Router>;
}
}