import { BrowserRouter as Router, Switch, Redirect, Route, Link } from "react-router-dom" import React, { Fragment } from "react" import { pageList } from "@/plugins/pageHoc" import Layout from "@/views/Layout" import Auth from "@/ui/Auth" import routes, { Loading } from "./route" function LoadWrapper(props: any) { if (props.isLazy) { const LoadingComp=props.loading?props.loading: ()=><Loading color="#ff0000"></Loading> //NormalLoading; return <React.Suspense fallback={<LoadingComp></LoadingComp>}>{props.children}</React.Suspense> } return <Fragment>{props.children}</Fragment> } function RouteMap(props: any) { const routes: any[] = props.routes return ( <Switch> {routes.map((route, index) => { const { exact = false } = route if (route.redirect) { return ( <Route key={index} path={route.path} exact={exact}> <Redirect to={route.redirect}></Redirect> </Route> ) } if (route.component) { return ( <Auth key={index} needAuth={!!route.meta?.auth} path={route.path} exact={exact}> <LoadWrapper loading={route.loading} isLazy={typeof route.component.$$typeof === "symbol"}> <route.component meta={route.meta}>{route.children && <RouteMap routes={route.children}></RouteMap>}</route.component> </LoadWrapper> </Auth> ) } })} </Switch> ) } export default function () { console.log(pageList) return ( <Router> <RouteMap routes={routes}></RouteMap> {/* <Layout render={() => { return <RouteMap routes={routes}></RouteMap> }} ></Layout> */} </Router> ) }