Это называется code splitting - фича включена в Webpack 2. инструкция import стала асинхронная. Можно сделать HOC (
asyncComponent) и использовать его для удобства (обычно код делят по раутам).
Потребуется настроить Webpack соответствующим образом, чтобы делил код по частям (chunks). В общем ищите по
"code splitting React", кто ищет тот найдет
Вот asyncComponent в самом простом варианте
import React, { Component } from 'react';
export default function asyncComponent(importComponent) {
return class AsyncComponent extends Component {
constructor(props) {
super(props);
this.state = { Component: null };
}
async componentDidMount() {
const { default: Component } = await importComponent();
this.setState({ Component });
}
render() {
const { Component } = this.state;
return Component && <Component {...this.props} />
}
}
}
Вот как он может быть использован с React Router 4
import React from 'react';
import { Route, Switch } from 'react-router-dom';
import { Wrapper } from 'Styles';
import SyncComponent from 'Components/SyncComponent';
import { asyncComponent } from 'Helpers';
const AsyncComponent = asyncComponent(() => import('Components/AsyncComponent'));
const App = () => (
<Wrapper>
<Switch>
<Route path='/route-to-async/' component={AsyncComponent}/>
<Route component={SyncComponent}/>
</Switch>
</Wrapper>
);
export default App;