Skip to content

Instantly share code, notes, and snippets.

@gaearon
Last active April 25, 2023 09:06
Show Gist options
  • Star 60 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save gaearon/fbd581089255cd529e62 to your computer and use it in GitHub Desktop.
Save gaearon/fbd581089255cd529e62 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;
@rubencodes
Copy link

Any chance this gist can be updated for latest RR? Tried doing it myself but wasn't able to do it...The willTransitionTo/From hooks aren't a thing anymore, I think.

@anorudes
Copy link

anorudes commented Mar 7, 2016

+1, can you update the code?)

@rosskevin
Copy link

rosskevin commented May 25, 2016

I just researched a bunch of this, and settled on https://github.com/luqin/react-router-loader. It has considered several other forks of loaders and appears to be maintained.

Here's a gist of the dynamic auth-flow example using jsx syntax:
https://gist.github.com/rosskevin/de55079e0d48f046fb518e45bb4f12b1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment