<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>React-SPA</title> <script src="https://cdn.bootcss.com/react/15.4.2/react.min.js"></script> <script src="https://cdn.bootcss.com/react/15.4.2/react-dom.min.js"></script> <script src="https://cdn.bootcss.com/babel-standalone/6.22.1/babel.min.js"></script> </head> <body> <script type="text/babel"> const About = React.createClass({ render() { return <h3>About</h3> } }); const Inbox = React.createClass({ render() { return ( <div> <h2>Inbox</h2> </div> ) } }); const Home = React.createClass({ render() { return <h3>Home</h3> } }); const App = React.createClass({ getInitialState() { return { route: window.location.hash.substr(1) } }, componentDidMount() { window.addEventListener(‘hashchange‘, () => { this.setState({ route: window.location.hash.substr(1) }) }) }, render() { let View; switch (this.state.route) { case ‘/about‘: View = About; break; case ‘/inbox‘: View = Inbox; break; default: View = Home; } return ( <div> <h1><a href="#/">Home</a></h1> <ul> <li><a href="#/about">About</a></li> <li><a href="#/inbox">Inbox</a></li> </ul> <View/> </div> ) } }); ReactDOM.render(<App />, document.body); </script> </body> </html>