组件按需加载

Others 2019-06-13 06:51:08 2019-06-13 06:51:08 2052 次浏览
import React, { Component } from 'react'
export default function asyncComponent(importComponent) {
    class AsyncComponent extends Component {
        constructor(props) {
            super(props)

            this.state = {
                component: null
            }
        }

        async componentDidMount() {
            const { default: component } = await importComponent()

            this.setState({
                component: component
            })
        }

        render() {
            const C = this.state.component

            return C ? <C {...this.props} /> : null
        }
    }

    return AsyncComponent
}

AsyncComponent(()=>import("./index"))