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
JavaScript
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;