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的问题,请问一下该如何解决?
已经解决