react-zeanium-ui-ui
Version:
Zeanium UI Framework for React.js
58 lines (55 loc) • 1.27 kB
JavaScript
require('./URLRouter.less');
var React = require('react');
var ErrorPage = require('../view/ErrorPage');
var RouterMapping = require('../utils/RouterMapping');
module.exports = React.createClass({
displayName:'URLRouter',
getInitialState:function(){
return {
view: null,
argv: null
}
},
componentDidMount:function(){
var _self = this,
_view = null,
_mapping = RouterMapping.create(this.props.mapping||{});
this._router = new RestfulRouter(function (router){
router.error(function (req){
_self.setState({
view: ErrorPage,
argv: {
request: req
}
});
});
_mapping.each(function (path, mapping){
(function (path, mapping) {
router.get(path, function(req){
mapping.request = req;
_view = mapping.mappings.index || mapping.view;
if(_self.state.view === _view){
if(mapping.mapping=='{*}'){ return; }
_self.setState({
view: _view,
argv: mapping
});
} else {
_self.setState({
view: _view,
argv: mapping
});
}
});
})(path, mapping);
});
});
},
render: function(){
return (
<div className="c-url-router">
{this.state.view && <this.state.view {...this.state.argv} />}
</div>
);
}
});