使用react-router4 的按需加载,js文件加载出来,可是页面却没有内容

AsyncComponent.js

import React from 'react'

const asyncComponent = loadComponent => (
    class AsyncComponent extends React.Component {
        state = {
            Component: null,
        }

        componentWillMount() {
            if (this.hasLoadedComponent()) {
                return;
            }

            loadComponent()
                .then(module => module.default)
                .then((Component) => {
                    this.setState({ Component });
                })
                .catch((err) => {
                    console.error(`Cannot load component in <AsyncComponent />`);
                    throw err;
                });
        }

        hasLoadedComponent() {
            return this.state.Component !== null;
        }

        render() {
            const { Component } = this.state;
            return (Component) ? <Component {...this.props} /> : null;
        }
    }
);

export default asyncComponent;

app.js

//......
const About = asyncComponent(() =>
import
(/* webpackChunkName: "about" */ "./container/about")
)

......

  <Route exact
         path="/about" render={(props) => {
          return (login.login && testPermission('test_script_management') ) ?
           <About {...props}/> : login.login ? <Nopermission/> :
           <Redirect to={{pathname: '/login'}}/>;
        }}/>

./container/about

import React from 'react'
import {withRouter} from 'react-router'
import { Layout} from 'antd';
const {Content,} = Layout;
class About extends React.Component {

    render() {
        console.log('这是about页面')
        return (
            <Content className="content">
                <div className="content-container" style={{minHeight:'calc(100vh - 64px)'}}>
                  
                </div>
            </Content>
        )
    }
}


export default  About

webpack.config.js

......
  output: {
     path: path.join(__dirname, 'build'),
    pathinfo: true,
    filename: 'static/js/bundle.js',
    chunkFilename: 'static/js/[name].chunk.js',
    publicPath: publicPath,
    devtoolModuleFilenameTemplate: info =>
      path.resolve(info.absoluteResourcePath),
  },
......

当跳转到/about路由的时候显示已经引入了js文件,可是页面却没有显示内容
图片描述

这里有个相关的问题链接描述,我觉得我这里的react-router4按需引入可能也是因为default的问题,请问一下该如何解决?

阅读 4.1k
1 个回答

已经解决


   loadComponent()
                .then(module => module.default) **//将module.default改为module**
                .then((Component) => {
                    this.setState({ Component });
                })
                .catch((err) => {
                    console.error(`Cannot load component in <AsyncComponent />`);
                    throw err;
                });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题