UNPKG

wiz-frameworks

Version:

wizlong react framework

122 lines (99 loc) 4.03 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.createRoute = exports.createRoutes = exports.dynamicWrapper = undefined; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _dynamic = require('dva/dynamic'); var _dynamic2 = _interopRequireDefault(_dynamic); var _router = require('dva/router'); var _reactRouterCacheRoute = require('react-router-cache-route'); var _reactDocumentTitle = require('react-document-title'); var _reactDocumentTitle2 = _interopRequireDefault(_reactDocumentTitle); var _objectAssign = require('object-assign'); var _objectAssign2 = _interopRequireDefault(_objectAssign); var _tool = require('../tool'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } var $$ = _tool.utils_tool.$$; /** * 生成动态组件 * @param {*} app * @param {*} models * @param {*} component */ var dynamicWrapper = exports.dynamicWrapper = function dynamicWrapper(app, _models, component) { return (0, _dynamic2['default'])({ app: app, models: function models() { return _models; }, component: component }); }; /** * 生成一组路由 * @param {*} app * @param {*} routesConfig */ var createRoutes = exports.createRoutes = function createRoutes(app, routesConfig) { return _react2['default'].createElement( _router.Switch, null, routesConfig(app).map(function (config) { return createRoute(app, function () { return config; }); }) ); }; // 路由映射表 window.dva_router_pathMap = {}; /** * 生成单个路由 * @param {*} app * @param {*} routesConfig */ var createRoute = function createRoute(app, routesConfig) { var _routesConfig = routesConfig(app), Comp = _routesConfig.component, path = _routesConfig.path, indexRoute = _routesConfig.indexRoute, title = _routesConfig.title, cached = _routesConfig.cached, otherProps = _objectWithoutProperties(_routesConfig, ['component', 'path', 'indexRoute', 'title', 'cached']); if (path && path !== '/') { window.dva_router_pathMap[path] = _extends({ path: path, title: title }, otherProps); // 为子路由增加parentPath if (otherProps.childRoutes && otherProps.childRoutes.length) { otherProps.childRoutes.forEach(function (item) { if (window.dva_router_pathMap[item.key]) { window.dva_router_pathMap[item.key].parentPath = path; } }); } } var htmlTitle = global.constants && global.constants.env.app_html_title ? global.constants.env.app_html_title : title; var routeProps = (0, _objectAssign2['default'])({ key: path || $$.randomStr(4), render: function render(props) { return _react2['default'].createElement( _reactDocumentTitle2['default'], { title: htmlTitle ? htmlTitle.replace(/{.*}/gi, title) : title }, _react2['default'].createElement(Comp, _extends({ routerData: otherProps }, props)) ); }, cached: cached }, path && { path: path }); if (indexRoute) { return [_react2['default'].createElement(_router.Redirect, { key: path + '_redirect', exact: true, from: path, to: indexRoute }), _react2['default'].createElement(_router.Route, routeProps)]; } return cached ? _react2['default'].createElement(_reactRouterCacheRoute.CacheRoute, routeProps) : _react2['default'].createElement(_router.Route, _extends({}, routeProps, { exact: true })); }; exports.createRoute = createRoute;