UNPKG

react-crossroads

Version:

Client side router for web applications built with React and utilizing the Flux architecture. The backing routing engine is CrossroadsJs.

41 lines (35 loc) 1.11 kB
var React, RouteTo, isLeftClick, isModifiedEvent; React = require('react'); isLeftClick = function(event) { return event.button === 0; }; isModifiedEvent = function(event) { return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey); }; RouteTo = { propTypes: { to: React.PropTypes.string.isRequired, params: React.PropTypes.object }, contextTypes: { router: React.PropTypes.object.isRequired }, getHref: function() { var err; try { return this.context.router.stores.route.hrefTo(this.props.to, this.props.params); } catch (_error) { err = _error; console.error(new Error("Failed to acquire href to `" + this.props.to + "` with parameters " + (JSON.stringify(this.props.params)) + " [" + err.message + "]")); return '#'; } }, handleRouteTo: function(event) { if (isModifiedEvent(event) || !isLeftClick(event)) { return; } event.preventDefault(); return this.context.router.actions.transition(this.context.router.stores.route.pathTo(this.props.to, this.props.params)); } }; module.exports = RouteTo;