skyline/src/utils/RouterConfig.jsx
Hanxiang Gao 4eb68e7fb2 feat: Add initial code of skyline-console
Add initial code of skyline-console

Change-Id: Icba2152a014761f53789357b5085d0779cd0e2a4
2021-06-01 23:29:30 +08:00

56 lines
1.7 KiB
JavaScript

// Copyright 2021 99cloud
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import React from 'react';
import { Redirect } from 'react-router-dom';
import { Switch, Route } from 'react-router';
import { isString, isObject } from 'lodash';
// import { isArray } from 'util';
const renderRoutes = (routes, extraProps = {}, switchProps = {}) =>
routes ? (
<Switch {...switchProps}>
{routes.map((route, i) => {
const key = route.key || i;
if (route.redirect) {
const { redirect } = route;
if (isString(redirect)) return <Redirect key={key} to={redirect} />;
if (isObject(redirect)) {
return <Redirect key={key} {...redirect} />;
}
}
return (
<Route
key={key}
exact={route.exact}
path={route.path}
render={(props) => {
if (route.render) {
return route.render(props);
}
return (
<route.component {...props} {...extraProps} route={route} />
);
}}
strict={route.strict}
/>
);
})}
</Switch>
) : null;
export default renderRoutes;