Jestem nowy w react & react router dom v5, także mój angielski jest kiepski. Z góry dziękuję za pomoc.
mój problem: Mam 2 główne trasy w moim App.js trasa
import { Suspense } from 'react';
import {BrowserRouter as Router, Switch, Route} from 'react-router-dom'
/* Pges */
import AdminContainer from './Pages/Admin/AdminContainer';
import PublicContainer from './Pages/Public/PublicContainer';
import NotFound from './Pages/NotFound'
import AuthContainer from './Pages/Auth/AuthContainer';
/* Protected Route */
/* Helpers */
function App() {
console.log("APP")
return (
<Suspense fallback={(<p>Loading</p>)}>
<Router>
<Switch>
<Route path="/auth" component={AuthContainer} />
<Route path="/admin" component={AdminContainer} />
<Route path="/*" component={PublicContainer} />
<Route path="*" component={NotFound} />
</Switch>
</Router>
</Suspense>
)
}
export default App;
u автоконтейнера 2 подмаршрута "/podpis "/rejestracja"
import React from "react";
import {
BrowserRouter as Router,
Switch,
Route,
withRouter
} from "react-router-dom";
// PAGES
import Signin from "../Auth/Signin";
import Signup from "../Auth/Signup";
const AuthContainer = () => {
console.log("AUTH")
return (
<div>
<Router>
<Switch>
<Route exact path="/auth" component={Signin}/>
<Route exact path="/auth/signin" component={Signin}/>
<Route exact path="/auth/signup" component={Signup}/>
</Switch>
</Router>
</div>
);
};
export default withRouter(AuthContainer);
wtedy u mojego publicznej towarzyszącej jest 3 подмаршрута "/" "/produkt" "/микарт"
/* Dependencies */
import { Route, Switch, BrowserRouter as Router } from 'react-router-dom'
/* Components */
import Header from "../../Components/Header"
import Products from "./Products"
import Home from "./Home"
import UserProfile from "../User/AccountProfile"
import MyCart from '../Public/MyCart'
const PublicContainer = () => {
console.log("PUBLIC")
return (
<div>
<Router>
<Header />
<Switch>
<Route exact path='/' render={(props) => <Home />} />
<Route exact path='/products' render={(props) => <Products />} />
<Route exact path='/mycart' render={(props) => <MyCart isAuth={false} />} />
</Switch>
</Router>
</div>
)
}
export default PublicContainer
komponent " mój koszyk "będzie wyświetlany tylko w przypadku, gdy wartość isAuth true, w przeciwnym razie перенаправится na"/auth/signin".
import React from 'react'
import { Redirect } from 'react-router'
const MyCart = ({isAuth}) => {
if(!isAuth)
return (<Redirect from='*' to='/auth/signin'></Redirect>)
return (
<div>
my cart
</div>
)
}
export default MyCart
Problem w tym, że on próbuje przekierować na "/auth/signin", ale wciąż znajduje się na stronie "/"
Gdy nacisnę ponownie, w końcu перенаправится na "/auth/login".
Jak mogę rozwiązać ten problem, naprawdę doceniam twoją pomoc
Zaktualizować
jest to przegląd moich zaplanowanych tras
Przy okazji, myślę, że gdy mycart isAuth ma wartość false, próbuje przejść pod adres /auth/signin, co prowadzi do tego, że link w górnym adresie URL prawidłowo wskazuje na autoryzację, ale po to on sprawdza tylko procedury publiccontainer zamiast sprawdzania app.js trasy
Ale kiedy restartuję go, zaczyna szukać właściwą trasę app.js trasy, które zwracają przewidywana trasa i stronę, która jest wejściem