reactui
Version:
A components library for ReactJS. This is part of the Gearz project
50 lines (45 loc) • 1.89 kB
JSX
var React = require("react");
var gearzMixin = require("../../gearz.mixin");
var Link = React.createClass({
mixins: [gearzMixin],
processAjaxData: function (response, urlPath) {
document.getElementById("content").innerHTML = response.html;
document.title = response.pageTitle;
window.history.pushState({"html": response.html, "pageTitle": response.pageTitle}, "", urlPath);
},
navigator: function (routeInfo) {
return function (e) {
var onNavigate = this.props.onNavigate;
onNavigate && onNavigate(e);
if (routeInfo.routeData.isClient) {
//var currentInfo = this.props.router.getCurrentLocationInfo();
var Component = window[routeInfo.routeData.pageComponent];
var targetElement = document.getElementById(this.props.target);
if (Component && targetElement) {
React.render(<Component />, targetElement);
window.history.pushState(
{
pageComponent: routeInfo.routeData.pageComponent,
viewData: {},
"pageTitle": "TITLE"
},
null,
routeInfo.uri);
}
}
e.preventDefault();
}.bind(this);
},
render: function () {
var href = this.props.href,
router = this.props.router,
onNavigate = this.props.onNavigate; // triggered when navigating through this link
var routeInfo = router.getInfo(href);
return (
<a href={routeInfo.uri} onClick={this.navigator(routeInfo)}>
{routeInfo.uri}
</a>
);
}
});
module.exports = Link;