wiz-frameworks
Version:
wizlong react framework
122 lines (99 loc) • 4.03 kB
JavaScript
;
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;