UNPKG

tuns-mobile-components

Version:

Tuns Design UI

175 lines (166 loc) 4.46 kB
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>; } }