reactui
Version:
A components library for ReactJS. This is part of the Gearz project
53 lines (46 loc) • 2.07 kB
JavaScript
define(["exports"], function (exports) {
"use strict";
var React = require("react");
var gearzMixin = require("../../gearz.mixin");
var Link = React.createClass({
displayName: "Link",
mixins: [gearzMixin],
processAjaxData: function processAjaxData(response, urlPath) {
document.getElementById("content").innerHTML = response.html;
document.title = response.pageTitle;
window.history.pushState({ html: response.html, pageTitle: response.pageTitle }, "", urlPath);
},
navigator: function navigator(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(React.createElement(Component, null), targetElement);
window.history.pushState({
pageComponent: routeInfo.routeData.pageComponent,
viewData: {},
pageTitle: "TITLE"
}, null, routeInfo.uri);
}
}
e.preventDefault();
}).bind(this);
},
render: function render() {
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 React.createElement(
"a",
{ href: routeInfo.uri, onClick: this.navigator(routeInfo) },
routeInfo.uri
);
}
});
module.exports = Link;
});