From 04e95487d0b99148ef616a7e4e1cb3996efe8fff Mon Sep 17 00:00:00 2001 From: Luka Skukan Date: Wed, 1 Feb 2017 14:29:51 +0100 Subject: [PATCH] Add support for PlainRoute format in router --- src/components/Router.js | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/components/Router.js b/src/components/Router.js index e24433d..8f33dca 100644 --- a/src/components/Router.js +++ b/src/components/Router.js @@ -1,5 +1,5 @@ import React from 'react'; -import { Router as ReactRouter } from 'react-router'; +import { Router as ReactRouter, Route } from 'react-router'; import utils from './../utils'; import context from './../context'; @@ -15,6 +15,8 @@ export default class Router extends ReactRouter { user: React.PropTypes.object }; + static propTypes = ReactRouter.propTypes; + static defaultProps = ReactRouter.defaultProps; state = { @@ -46,8 +48,10 @@ export default class Router extends ReactRouter { super(...arguments); if (this.props.routes) { - // The reason we wrap in a div is because we just need to have a root element. - this._mapMarkedRoutes(
{this.props.routes}
); + this._isPlainRoute(this.props.routes) + ? this._mapMarkedPlainRoutes(this.props.routes) + // The reason we wrap in a div is because we just need to have a root element. + : this._mapMarkedRoutes(
{this.props.routes}
); } else { this._mapMarkedRoutes(this); } @@ -57,6 +61,21 @@ export default class Router extends ReactRouter { context.setRouter(this); } + _isPlainRoute(routeData) { + return (routeData.component) + || (routeData.length && routeData[0] && routeData[0].component); + } + + _mapMarkedPlainRoutes(routeData, index) { + if (routeData.length) { + return (
{routeData.map(this._mapMarkedPlainRoutes)}
); + } + + return ( + + ); + } + _mapMarkedRoutes(routes) { let markedRoutes = this.markedRoutes;