zhejiushizhuce 2 лет назад
Родитель
Сommit
de435d0de8

+ 1 - 0
package.json

@@ -65,6 +65,7 @@
     "react-lazy-load-image-component": "^1.5.6",
     "react-number-format": "^5.1.4",
     "react-redux": "^8.0.5",
+    "react-router": "^6.23.1",
     "react-router-dom": "^6.6.2",
     "react-scripts": "5.0.1",
     "react-select": "^5.7.0",

+ 2 - 1
src/App.js

@@ -38,7 +38,7 @@ import rtlPlugin from 'stylis-plugin-rtl';
 import {CacheProvider} from '@emotion/react';
 import createCache from '@emotion/cache';
 // components
-import {BrowserRouter, HashRouter, Route, Routes, useLocation} from 'react-router-dom';
+import {BrowserRouter, HashRouter, Route, Routes, useLocation, useNavigate} from 'react-router-dom';
 import {ToastContainer} from 'react-toastify';
 import Layout from "@layout/Layout";
 import {getBFP, getFetchStatus, getUserID, getUserInfo} from '@features/mainSlice';
@@ -76,6 +76,7 @@ const App = () => {
     const {pathname, search, hash} = useLocation();
     const gaKey = process.env.REACT_APP_PUBLIC_GA;
     gaKey && ReactGA.initialize(gaKey);
+    const navigate = useNavigate();
     // auto RTL support for Material-UI components and styled-components
 
     const plugins = direction === 'rtl' ? [rtlPlugin] : [];

+ 0 - 2
src/components/SubScreen/index.jsx

@@ -4,7 +4,6 @@ import SvgIcon from "@components/SvgIcon";
 import {animated,easings} from "@react-spring/web";
 import {useState,useEffect} from "react";
 import {useSpring, useSpringRef} from "@react-spring/core";
-import {useLocation} from "react-router";
 import {sleep} from "@utils/helpers";
 const i18n=global.i18n;
 
@@ -12,7 +11,6 @@ const SubScreen=({open,onClose,children,route,timeout,header})=>{
     // const [subOpen,setSubOpen]=useState(open);
     // console.log(header)
     const subOpen=open;
-    const {pathname,hash} = useLocation();
     const duration=timeout;
     // const duration=50;
 

+ 1 - 1
src/index.js

@@ -3,7 +3,7 @@ import './Global'
 import React from 'react';
 import ReactDOM from 'react-dom/client';
 import App from './App';
-import {BrowserRouter} from 'react-router-dom';
+import {BrowserRouter, MemoryRouter} from 'react-router-dom';
 import {ThemeProvider} from '@contexts/themeContext';
 import {ShopProvider} from '@contexts/shopContext';
 import {Provider} from 'react-redux';

+ 5 - 1
src/layout/Routes/RouteWrapper.jsx

@@ -45,7 +45,11 @@ const RouteWrapper = (props) => {
         );
     }
     const handleClose = () => {
-        navigate(ROUTE_PATH.BACK);
+        let state=window.history.state;
+        if (state!=null&&state.idx<=0){
+            navigate("",{replace:true});
+        }
+        else navigate(ROUTE_PATH.BACK);
     }
     const renderPop=()=>{
         let comp=(<></>);

+ 7 - 4
src/layout/Routes/index.jsx

@@ -6,7 +6,7 @@ import TransitionGroup from "react-transition-group/TransitionGroup";
 import CSSTransition from "react-transition-group/CSSTransition";
 import SubScreen from "@components/SubScreen";
 import RouteContainer from "@layout/Routes/RouteContainer";
-import {Navigate, useLocation} from "react-router";
+import {Navigate} from "react-router";
 import usePreviousRoute from "@hooks/usePreviousRoute";
 import {ROUTE_PATH} from "@constants/routes";
 import {useThemeProvider} from "@contexts/themeContext";
@@ -14,7 +14,6 @@ import useAuthLockRoute from "@hooks/useAuthLockRoute";
 const RouteWrapper = lazy(() => import('@layout/Routes/RouteWrapper'));
 
 const PageNotFound = lazy(() => import('@pages/PageNotFound'));
-
 const CreateRoute=(props)=>{
     const {route,path,isLogin}=props;
     const component=(route.component!=null&&route.component!=="")?route.component:"ModulePage";
@@ -58,7 +57,7 @@ const CBrowserRouter=(props)=>{
 const CHashRouter=(props)=>{
     const {routes,hlocation,isLogin}=props;
     const {checkRoute}=useThemeProvider();
-    const navigate = useNavigate()
+    const navigate = useNavigate();
     //多hash 切到最后一个
     let {pathname,hash,search}=hlocation;
     if (hash!=null){
@@ -78,7 +77,11 @@ const CHashRouter=(props)=>{
         return null;
     }
     const handleClose = () => {
-        navigate(ROUTE_PATH.BACK);
+        let state=window.history.state;
+        if (state!=null&&state.idx<=0){
+            navigate("",{replace:true});
+        }
+        else navigate(ROUTE_PATH.BACK);
     }
     return (
         <TransitionGroup

+ 4 - 4
src/widgets/WCashWheel/WCashWheelHeader.jsx

@@ -39,8 +39,8 @@ const WCashWheelHeader=({...props})=>{
             }
         }
         if (isclose){
-            // close();
-            navigate("",{replace:true});
+            close();
+            // navigate("",{replace:true});
         }
     }
     const renderHeader=()=>{
@@ -53,8 +53,8 @@ const WCashWheelHeader=({...props})=>{
                 <div className={styles.top}>
                     <div className={styles.left}>
                         <button className={styles.close} onClick={()=>{
-                            // close();
-                            onCheckClose();
+                            close();
+                            // onCheckClose();
                         }}>
                             <SvgIcon className={styles.arrow} herf={"icon_Arrow"}/>
                         </button>