Reaccionar Router Dom cómo redirigir a Otros App.js ruta cuando usted está en cualquier subRoute de cualquier ruta [duplicar]

0

Pregunta

Soy nuevo en reaccionar y reaccione router dom v5, también mi inglés es malo. Gracias de antemano por ayudarme.

mi problema: Tengo 2 Rutas Principales en mi App.js ruta

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;

el authcontainer tiene 2 sub rutas "/signin" "/signup"

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);

a continuación, el mi publiccontainer tiene 3 sub rutas "/" "/producto" "/mycart"

/* 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

mi carro componente sólo haría si isAuth es verdadera, de lo contrario se le redirigirá a "/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

El problema es que su tratando de redirigir a "/auth/signin", pero que todavía se encuentra en "/" de la página enter image description here

Cuando llegué a recargar finalmente redirigir a "/auth/signin"enter image description here

¿Cómo puedo solucionar este problema, realmente aprecio su ayuda

ACTUALIZACIÓN

este es el resumen de mis rutas planificadas enter image description here

Por cierto creo que cuando la mycart isAuth es falso entonces que intenta Vincular a /auth/signin que hace que el enlace en la parte superior de la url correctamente el punto de autenticación para iniciar sesión, pero después de que sólo comprueba el subroutes de la publiccontainer en lugar de comprobar el app.js rutas enter image description here

Pero cuando voy a recargar, es empezar a buscar la ruta correcta de la app.js las rutas que devolver la ruta y la página que es el signo en

enter image description here

1

Mejor respuesta

0

He leído casi similar pregunta en términos de procesamiento únicamente la ruta de acceso correcta al golpear actualizar/recargar

aquí Reaccionar Router sólo funciona después de la actualización de la página

El problema era que yo estoy envolviendo el sub rutas con un nuevo router, así que trató de quitar el Router jsx que se ajuste el Interruptor> & otros subroutes en ambos AuthContainer.js & PublicContainer.js

esta es la actualización de los AuthContainer.js

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>
        <Switch>
          <Route exact path="/auth/signin" component={Signin}/>
          <Route exact path="/auth/signup" component={Signup}/>
          <Route exact path="/auth" component={Signin}/>
        </Switch>
    </div>
  );
};

export default withRouter(AuthContainer);

Y este es el PublicContainer.js

/* Dependencies */
import { Route, Switch } 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'

/* Protected */

const PublicContainer = ({toAuth}) => {
    console.log("PUBLIC")
    return (
        <div>
                <Header />
                <Switch>
                    <Route exact path='/products' render={(props) => <Products />} />
                    <Route exact path='/profile' render={(props) => <UserProfile />} />
                    <Route exact path='/mycart' render={(props) => <MyCart />} />
                    <Route exact path='/' render={(props) => <Home />} />
                </Switch>
        </div>
    )
}

export default PublicContainer

enter image description here

2021-11-21 16:31:24

Vinculado a uno de mis respuestas.
Drew Reese

@DrewReese Muchas Gracias! Dios los bendiga
TheNewBeeeee

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................