Async component for dynamic imports

This commit is contained in:
dannyrb 2019-04-29 08:31:40 -04:00
parent f02559c778
commit 91613d6bb0

View File

@ -0,0 +1,37 @@
/**
* We use this component to leverage "Code Splitting"
*
* Link: https://serverless-stack.com/chapters/code-splitting-in-create-react-app.html
*/
import React, { Component } from 'react'
export default function asyncComponent(importComponent) {
class AsyncComponent extends Component {
constructor(props) {
super(props)
this.state = {
component: null,
}
}
async componentDidMount() {
// Add dynamically loaded component to state
const { default: component } = await importComponent()
this.setState({
component: component,
})
}
render() {
const C = this.state.component
// Render the loaded component, or null
return C ? <C {...this.props} /> : null
}
}
return AsyncComponent
}