react-with-dynamic
Improved lazy loading in React with suspense and error boundary.
How to Install
First, install the library in your project by npm:
$ npm install react-with-dynamic
Or Yarn:
$ yarn add react-with-dynamic
Getting Started
Without Context configuration
• Use withDynamic:
// App.js
import React from 'react';
import { withDynamic } from 'react-with-dynamic';
const LazyComponent = withDynamic({
suspenseFallback: <p>Loading...</p>,
errorBoundaryProps: {
fallbackComponent: () => <p>Oops! Error occurred!</p>,
onError: (err) => console.log(err),
},
})(lazy(() => import('./components/LazyComponent')));
const App = () => {
return <LazyComponent />;
};
export default App;
With Context configuration
• Set DynamicProvider (if you want to use the same suspense fallback and error boundary config for all lazy components wrapped in withDynamic HOC):
// index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { DynamicProvider } from 'react-with-dynamic';
import App from './App';
ReactDOM.render(
<DynamicProvider
suspenseFallback={<p>Loading...</p>}
errorBoundaryProps={{
fallbackComponent: () => <p>Oops! Error occurred!</p>,
onError: (err) => console.log(err),
}}
>
<App />
</DynamicProvider>,
document.getElementById('root')
);
• Then use withDynamic:
// App.js
import React from 'react';
import { withDynamic } from 'react-with-dynamic';
const LazyComponent = withDynamic()(
lazy(() => import('./components/LazyComponent'))
);
const App = () => {
return <LazyComponent />;
};
export default App;