Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

228
Views
¿Cómo puedo establecer condicionalmente la ruta predeterminada en react-router-dom v6?

Tengo dos páginas Page1 y Page2. Necesito establecer condicionalmente uno o el otro como página de inicio en función de una condición. También necesito asegurarme de que todas las direcciones URL tengan un prefijo de identificación. Toma lo siguiente

 <Routes> <Route path={`/${id}`} element={condition ? <Page1 /> : <Page2>} /> <Route path={`/:id/page1`} element={<Page1 />} /> <Route path={`/:id/page2`} element={<Page2 />} /> <Route path="/" element={id ? <Navigate replace to={`/${id}`} /> : <Navigate replace to={`/`} />} /> } /> </Routes>

Esto establece la URL de la página de inicio en '/123' y redirige a '/123' si el usuario ingresa '/'. También tengo una condición en la primera ruta que configura dinámicamente el componente para renderizar.

Mi problema es que si la 'condición' devuelve una promesa, entonces la página 2 se configura primero y cuando la condición se resuelve cambia a la página 1. ¿Hay una mejor manera de hacer esto?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puede crear un componente de ruta de diseño que represente en "/:id" y condicionalmente represente un indicador de carga o similar mientras se verifica la condición. Cuando la propiedad de la condition no está definida inicialmente, HomePageLayout muestra un indicador de carga, y cuando Promise resuelve y actualiza el estado de la condition a cualquier otra cosa que no sea undefined , se muestra un Outlet para las rutas anidadas.

Ejemplo:

 const HomePageLayout = ({ condition }) => { if (condition === undefined) { return <LoadingSpinner />; } return condition ? <Outlet /> : };

Utilice una ruta de índice para representar los Page1 de la Page2 o de la página 2. La ruta de índice se representa exactamente cuando la ruta es igual a la de su ruta principal.

 const [condition, setCondition] = useState(); // <-- initially undefined useEffect(() => { getCondition() .then(result => setCondition(!!result)); }, []); ... <Routes> <Route path="/:id" element={<HomePageLayout {...{ condition }} />}> <Route index element={condition ? <Page1 /> : <Page2>} /> <Route path="page1" element={<Page1 />} /> <Route path="page2" element={<Page2 />} /> </Route> <Route path="/" element={<Navigate replace to={id ? `/${id}` : "/"} />} /> </Routes>
about 4 years ago · Juan Pablo Isaza Report

0

necesita crear dos rutas diferentes con una ruta diferente y desde la página de inicio escribe la condición en la que se redirigirá la página

 Home Page <Link to={true ? '/page1' : '/page2' }/> Routes <Route path="/page1" element={<Page1 />} /> <Route path="/page2" element={<Page2 />} />
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!