in packages/react/alfa-react/src/createAlfaApp.tsx [22:68]
function createAlfaApp<P = any>(option: AlfaFactoryOption): React.FC<any> {
const { name, dependencies, priority, dynamicConfig, manifest } = option || {};
// check app option
if (!name) return () => null;
let preLoader: () => Promise<any>;
if (priority === 'high' && !IS_SSR) {
const p = loader.register({
...option,
// 必须设置 container,否则沙箱会创建插入一个新的 body
container: document.body,
dynamicConfig: typeof dynamicConfig === 'boolean' ? dynamicConfig : !manifest,
});
preLoader = async () => p;
}
const passedInOption = option;
return (props: P & IProps) => {
const customProps = useMemo(() => ({
...props,
__injectHistory: props.history,
}), [props]);
return (
<ErrorBoundary {...props}>
<Application
// 兼容历史逻辑,优先使用 option 中的 sandbox 参数
{...passedInOption}
style={props.style || passedInOption.style}
syncHistory={props.syncHistory}
syncRegion={props.syncRegion}
syncResourceGroup={props.syncResourceGroup}
onSyncHistory={props.onSyncHistory}
basename={props.basename}
sandbox={option.sandbox || props.sandbox}
deps={dependencies || {}}
customProps={customProps}
preLoader={preLoader}
/>
</ErrorBoundary>
);
};
}