style: react-provider

This commit is contained in:
wuji.xwt 2020-09-11 16:41:56 +08:00
parent bdeb5becbb
commit 692288bae8
2 changed files with 17 additions and 9 deletions

View File

@ -8,7 +8,7 @@ interface IProps {
} }
interface IState { interface IState {
schema: object | null; schema: Record<string, unknown> | null;
hasError: boolean; hasError: boolean;
} }
@ -76,6 +76,6 @@ export default class LazyComponent extends Component<IProps, IState> {
loading={Loading ? <Loading /> : null} loading={Loading ? <Loading /> : null}
{...restProps} {...restProps}
/> />
) );
} }
} }

View File

@ -8,11 +8,13 @@ import LazyComponent from './components/LazyComponent';
export default class ReactProvider extends Provider { export default class ReactProvider extends Provider {
// 定制构造根组件的逻辑,如切换路由机制 // 定制构造根组件的逻辑,如切换路由机制
createApp() { createApp() {
let RouterView = this.getRouterView(); const RouterView = this.getRouterView();
let App: any; let App: any;
const layoutConfig = this.getLayoutConfig(); const layoutConfig = this.getLayoutConfig();
if (!layoutConfig || !layoutConfig.componentName) { if (!layoutConfig || !layoutConfig.componentName) {
App = (props: any) => (RouterView ? createElement(RouterView, { ...props }) : null); App = (props: any) => {
return (RouterView ? createElement(RouterView, { ...props }) : null);
};
return App; return App;
} }
const { componentName: layoutName, props: layoutProps } = layoutConfig; const { componentName: layoutName, props: layoutProps } = layoutConfig;
@ -25,7 +27,9 @@ export default class ReactProvider extends Provider {
RouterView ? createElement(RouterView, props) : null, RouterView ? createElement(RouterView, props) : null,
); );
} else { } else {
App = (props: any) => (RouterView ? createElement(RouterView, props) : null); App = (props: any) => {
return (RouterView ? createElement(RouterView, props) : null);
};
} }
return App; return App;
} }
@ -83,13 +87,14 @@ export default class ReactProvider extends Provider {
const appHelper = new AppHelper(); const appHelper = new AppHelper();
appHelper.set('utils', this.getUtils()); appHelper.set('utils', this.getUtils());
appHelper.set('constants', this.getConstants()); appHelper.set('constants', this.getConstants());
const self = this;
const RouterView = (props: any) => { const RouterView = (props: any) => {
return createElement(Router as any, { return createElement(Router as any, {
routes, routes,
components: this.getComponents(), components: self.getComponents(),
utils: this.getUtils(), utils: self.getUtils(),
appHelper, appHelper,
componentsMap: this.getComponentsMapObj(), componentsMap: self.getComponentsMapObj(),
...props, ...props,
}); });
}; };
@ -104,7 +109,10 @@ export default class ReactProvider extends Provider {
return this.getLazyElement(pageId); return this.getLazyElement(pageId);
} else { } else {
const lazyElement = createElement(LazyComponent as any, { const lazyElement = createElement(LazyComponent as any, {
getPageData: async () => await this.getPageData(pageId), getPageData: async () => {
const pageData = await this.getPageData(pageId);
return pageData;
},
key: pageId, key: pageId,
context: this, context: this,
...props, ...props,