UNPKG

hc-components-test

Version:

基于react的通用组件库

46 lines (42 loc) 1.57 kB
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;