import * as React from 'react'; import Loadable, { LoadingComponentProps } from 'react-loadable'; class LoadingComponent extends React.Component { render() { return (
{this.props.error} {this.props.isLoading} {this.props.pastDelay} {this.props.timedOut}
); } } interface ComponentProps { text: string; } const Component: React.SFC = ({ text }) =>
{text}
; const Loadable100 = Loadable({ // a module shape with 'export = Component' / 'module.exports = Component' loader: () => Promise.resolve(Component), loading: LoadingComponent, delay: 100, timeout: 10000 }); const Loadable200 = Loadable({ // a module shape with 'export default Component' loader: () => Promise.resolve({ default: Component }), loading: LoadingComponent, delay: null, timeout: null }); const Loadable300 = Loadable({ // a module shape with 'export { Component }' loader: () => Promise.resolve({ Component }), loading: LoadingComponent, delay: false, timeout: false, render(loaded, props: ComponentProps) { const { Component } = loaded; return ; } }); const Loadable400 = Loadable({ // a module shape with both 'export default Component' and 'export { Component }' loader: () => Promise.resolve({ default: Component, Component }), loading: () => null, delay: 300, render(loaded, props) { const Component = loaded.default; const NamedComponent = loaded.Component; return ( ); } }); const LoadableMap = Loadable.Map({ loading: () => null, loader: { Component: () => Promise.resolve({ default: Component }), text: () => Promise.resolve("test text") }, render(loaded, props: ComponentProps) { let Component = loaded.Component.default; return ; } }); const used100 = ; const used200 = ; const used300 = ; const used400 = ; Loadable100.preload();