Skip to content

Instantly share code, notes, and snippets.

@id0Sch
Last active September 7, 2017 11:22
Show Gist options
  • Save id0Sch/bd590d8d340f94b2e35d5c5c5268ab0c to your computer and use it in GitHub Desktop.
Save id0Sch/bd590d8d340f94b2e35d5c5c5268ab0c to your computer and use it in GitHub Desktop.
AsyncComponent.js
import React, {Component} from 'react'
export default function AsyncComponent(getComponent) {
return class AsyncComponent extends Component {
static Component = null;
state = {Component: AsyncComponent.Component};
componentWillMount() {
if (!this.state.Component) {
getComponent().then(({default: Component}) => {
AsyncComponent.Component = Component
this.setState({Component})
})
}
}
render() {
const {Component} = this.state
if (Component) {
return <Component {...this.props} />
}
return null
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment