react-lazy-import
A simple higher order component for easy code splitting.
Features
- Supports
import()
- Supports react-router v4
- Ability to add
<LoadingComponent />
- Ability to Add
<ErrorComponent />
Quick example
import createLazyContainer from 'react-lazy-import'; const MyComponent = ; const App = return <div> My lazy component: <MyComponent /> </div> ;
Complete example
JavaScript
// Greeter.jsximport React from 'react'; const Greeter = name <div>Hello name I am lazy loaded</div>; ;
// App.jsximport React from 'react';import render from 'react-dom';import createLazyContainer from 'react-lazy-import'; const Loading = <div>Loading...</div>;const Error = <div>Error!</div>; const Greeter = ; const App = return <div> My lazy component: <Greeter ="Jason" /> </div> ; ;
TypeScript
// Greeter.tsx ...
// App.tsximport * as React from 'react';import createLazyContainer from 'react-lazy-import'; const Loading: React.SFC<> = <div>Loading...</div>;const Error: React.SFC<> = <div>Error!</div>; interface IGreeterProps name: string; // TypeScript currently doesn't support `import()` // so we need to use `System.import()` alias// This won't be needed in the future (TypeScript v2.4)declare const System: import: path: string => Promise<any>;}; const Greeter = createLazyContainer<IGreeterProps> System Loading Error; const App = return <div> My lazy component: <Greeter ="Jason" /> </div> ;
Usage with react-router
... import Route Switch from 'react-router-dom'; const Loading: React.SFC<> = <div>Loading...</div>;const Error: React.SFC<> = <div>Error!</div>; const Home = ;const About = ;const Contact = ;const NotFound = ; Component { return <Switch> <Route ='/' = /> <Route ='/About' = /> <Route ='/Contact' = /> <Route = /> </Switch> ; } ...
API
createLazyContainer(loader, [loadingComponent], [errorComponent])
-
loader: () => Promise<React.ComponentClass>
Function returning promise which returns a React component.
-
loadingComponent
(optional)React component which is rendered while your component is loading.
-
errorComponent
(optional)React component which is rendered when loader fails to load your component