hc-components-test
Version:
基于react的通用组件库
46 lines (42 loc) • 1.57 kB
JavaScript
import React from 'react';
import upperFirst from 'lodash/upperFirst';
import defaultsDeep from 'lodash/defaultsDeep';
import localeContext from './localeContext';
import getComponent from './layouts/getComponent';
import './index.less';
const context = require.context('./', true, /\w+\/\w+\.(jsx|js)$/);
const exportObj = {
getComponent: getComponent,
localeContext: localeContext,
/**
* option = {layoutOption, layout, route}
*/
getLayout(option, viewContent, CustomLayouts = {}) {
if (typeof option === 'string') {
return exportObj[upperFirst(option)] || exportObj['ConsoleLayout'];
} else {
if (option.route && option.route.layout) {
defaultsDeep(option.layoutOption, option.route.layoutOption, {route: option.route});
option.layout = option.route.layout;
delete option.route;
}
const layouts = Array.isArray(option.layout) ? option.layout : [option.layout];
const layoutType = layouts[layouts.length - 1];
const Layout = CustomLayouts[layoutType] || exportObj[upperFirst(layoutType)] || exportObj['ConsoleLayout'];
const layoutProps = Layout.getLayoutProps(option.layoutOption, viewContent);
viewContent = (<Layout {...layoutProps} />);
if (layouts.length > 1) {
option.layout = layouts.slice(0, -1);
return exportObj.getLayout(option, viewContent, CustomLayouts);
} else {
return viewContent;
}
}
}
};
context
.keys()
.forEach(key => {
Object.assign(exportObj, context(key));
});
export default exportObj;