react-imported-component
Version:
I will import your component, and help to handle it
33 lines (32 loc) • 963 B
JavaScript
import * as React from 'react';
import { getLoadable } from '../loadable/loadable';
import { useImported } from './useImported';
/**
* @deprecated use {@link useImported} instead
*/
export function ImportedModule(props) {
const { error, loadable, imported: module } = useImported(props.import);
if (error) {
throw error;
}
if (module) {
return props.children(module);
}
if (!props.fallback) {
throw loadable.resolution;
}
return props.fallback;
}
/**
* @deprecated use {@link useImported} instead
*/
export function importedModule(loaderFunction) {
const loadable = getLoadable(loaderFunction);
const Module = ((props) => (React.createElement(ImportedModule, { ...props, import: loadable, fallback: props.fallback })));
Module.preload = () => {
loadable.load().catch(() => ({}));
return loadable.resolution;
};
Module.done = loadable.resolution;
return Module;
}