Skip to content

Instantly share code, notes, and snippets.

@Sawtaytoes
Created September 20, 2018 02:48
Show Gist options
  • Save Sawtaytoes/644f142acc2970d0f1614a2f37d5c7f9 to your computer and use it in GitHub Desktop.
Save Sawtaytoes/644f142acc2970d0f1614a2f37d5c7f9 to your computer and use it in GitHub Desktop.
Simple Async React Router v4 Example
import React, { PureComponent } from 'react'
import { Match, Miss, Redirect } from 'react-router'
export default class Routes extends PureComponent {
constructor() {
super()
this.views = {}
}
loadView(fileName) {
if (this.views[fileName]) {
return this.views[fileName]
}
new Promise(resolve => require.ensure([], require => {
resolve(require(`./views/${fileName}`))
}))
.then(View => this.views[fileName] = <View />)
.then(() => this.forceUpdate())
.catch(err => {
console.error(err)
throw new Error(err)
})
return <div />
}
render() { return (
<div>
<Match pattern="/" exactly component={this.loadView.bind(this, 'home')} />
</div>
)}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment