import {ROUTE_TYPE_FULL, ROUTE_TYPE_IN, ROUTE_TYPE_POP, ROUTE_TYPE_POP_OR_FULL,ROUTE_TYPE_CUSTOM} from "@constants/routes"; import React, {cloneElement} from "react"; import Popup from "@components/Popup"; import SubScreen from "@components/SubScreen"; import {useNavigate} from "react-router-dom"; import {useThemeProvider} from "@contexts/themeContext"; import CSSTransition from "react-transition-group/CSSTransition"; const RouteContainer=(props)=>{ const { children, route,open} = props; const navigate = useNavigate() const {isMobile} = useThemeProvider(); const renderIn=()=>{ return ( <> {children} ); } const renderPop=()=>{ // 桌面端默认走居中 popup-big;用户信息(#/settings)改成右侧抽屉式 popup-drawer-right。 // 注意 route 字段是 component,不是 comp;这里同时兜底用 path 判定更稳。 const isSettings = route && (route.path === '#/settings' || route.component === 'settings'); const desktopClass = isSettings ? 'popup-drawer-right' : 'popup-big'; const popupClass = isMobile() ? '' : desktopClass; return( {children} ) } const renderSub=()=>{ return ( {children} ) } const renderPopOrFull=()=>{ return ( <> { isMobile()?renderSub():renderPop() } ) } const renderCustom=()=>{ return ( <> {children} ); } const renderComp=()=>{ let comp=(<>); if (route.type===ROUTE_TYPE_FULL||route.type===ROUTE_TYPE_IN){ comp=renderIn(); } else if (route.type===ROUTE_TYPE_POP_OR_FULL){ comp=renderPopOrFull(); } else if (route.type===ROUTE_TYPE_POP){ comp=renderPop(); } else if (route.type===ROUTE_TYPE_CUSTOM){ comp=renderCustom(); } return comp; } return ( renderComp() ); } export default RouteContainer;