Skip to content

Instantly share code, notes, and snippets.

@suhaotian
Forked from gaearon/createAsyncPage.jsx
Created April 11, 2016 06:47
Show Gist options
  • Save suhaotian/88f36c5da4d3a24e7591be1658bdabdf to your computer and use it in GitHub Desktop.
Save suhaotian/88f36c5da4d3a24e7591be1658bdabdf to your computer and use it in GitHub Desktop.
Webpack's async code splitting with React Router
'use strict';
var React = require('react');
function createAsyncHandler(getHandlerAsync, displayName) {
var Handler = null;
return React.createClass({
displayName: displayName,
statics: {
willTransitionTo(transition, params, query, callback) {
getHandlerAsync().then(resolvedHandler => {
Handler = resolvedHandler;
if (!Handler.willTransitionTo) {
return callback();
}
Handler.willTransitionTo(transition, params, query, callback);
if (Handler.willTransitionTo.length < 4) {
callback();
}
});
},
willTransitionFrom(transition, component, callback) {
if (!Handler || !Handler.willTransitionFrom) {
callback();
}
Handler.willTransitionFrom(transition, component, callback);
if (Handler.willTransitionFrom.length < 3) {
callback();
}
}
},
render() {
return <Handler {...this.props} />;
}
});
}
module.exports = createAsyncHandler;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment