React router example
by kahnaar
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.12.2/JSXTransformer.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react-with-addons.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/react-router/0.11.6/react-router.min.js"></script>
<div id="app"></div>
Babel + JSX
var Router = ReactRouter;
var Route = Router.Route,
DefaultRoute = Router.DefaultRoute,
Link=Router.Link,
RouteHandler = Router.RouteHandler;
var App = React.createClass({
mixins: [Router.State],
componentDidMount: function() {
},
render: function() {
var name = this.getRoutes().reverse()[0].name;
return (
<div>
<ul>
<li><Link to="view1">View1 link</Link></li>
<li><Link to="view2">View2 link</Link></li>
</ul>
<RouteHandler key={name}/>
</div>
);
}
});
var View1 = React.createClass({
componentWillLeave: function(cb) {
console.log('View1 will leave');
setTimeout(cb, 1);
},
componentDidMount: function(cb) {
console.log('View1 will open');
},
render: function() {
return (
<div>View 1 content</div>
);
}
});
var View2 = React.createClass({
componentWillLeave: function(cb) {
console.log('View2 will leave');
setTimeout(cb, 1);
},
componentDidMount: function(cb) {
console.log('View2 will open');
},
render: function() {
return (
<div>View 2 content</div>
);
}
});
var routes = (
<Route name="app" path="/" handler={App}>
<Route name="view1" handler={View1}/>
<Route name="view2" handler={View2}/>
</Route>
);
Router.run(routes, function (Handler) {
React.render(<Handler/>, document.getElementById('app'));
});