Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

159
Visualizações
Envolviendo una ruta de reacción en una declaración condicional

Estoy trabajando con el enrutador de reacción. Inicialmente, tenía dos componentes diferentes representados bajo la misma ruta, uno con un parámetro y otro sin (así es como se diferenciaron las rutas). Ahora estoy tratando de agregar parámetros opcionales a la primera ruta sin editar la segunda ruta. El problema es que no hay forma de saber la diferencia entre la primera ruta y la segunda.

Mi solución para esto fue envolver las rutas en una declaración condicional y la condición funciona para la primera ruta, pero no puedo llegar a la segunda porque la prueba que determina la declaración condicional solo se ejecuta en la primera representación de la ruta. Entonces, mi pregunta es ¿cómo envuelvo correctamente una ruta de reacción en una declaración condicional? Así es como se ven mis rutas:

 { !locationTest() ? <> <Route exact={true} path="/encounter-monitor/:queryData?" component={EncounterMonitor} /> </> : <> <Route exact={true} path="/encounter-monitor/:encounterID" component={EncounterMonitorDetails} /> </> }

Y la prueba:

 const locationTest = () => { let regex = new RegExp('/?'); let regex2 = new RegExp('/encounters-'); let theURL = window.location.href; let test = !regex.test(theURL) && regex2.test(theURL); return test }

Parece que no puedo hacer que la segunda ruta funcione de esta manera.

El primer componente tendrá una ruta que contiene / o /? y la segunda ruta siempre contendrá /encounters- .

about 4 years ago · Santiago Gelvez
2 Respostas
Responde à pergunta

0

Te estás acercando a esto mal. El enrutador React sirve para hacer que su aplicación sea una aplicación de una sola página mediante la representación condicional de componentes en función de la ubicación de la URL. Pero está tratando de agregar los datos a la URL como si fuera un lenguaje como php. ¿Quizás su solución radica en simplemente hacer componentes separados que manejen estos datos y simplemente pasarles los datos con dos rutas estáticas? O incluso tener una ruta y un componente pero renderizar condicionalmente los datos dentro de él (aunque recomendaría mantenerlos en componentes separados para que su proyecto sea más limpio)

about 4 years ago · Santiago Gelvez Relatório

0

En la mayoría de los escenarios, no desea renderizar 2 componentes diferentes en la misma ruta. Para pasar datos opcionales al componente, normalmente usaría los parámetros de búsqueda.

Esto significa que ya no debe pasar una ruta opcional para EncounterMonitor , sino mover esto a los parámetros de búsqueda. Una ruta de ejemplo sería:

 /encounter-monitor?query=foo+bar

Esto le permite diferenciarse fácilmente de:

 /encounter-monitor/1

Para respaldar lo anterior, debe actualizar sus rutas a:

 <> <Route exact={true} path="/encounter-monitor" component={EncounterMonitor} /> <Route exact={true} path="/encounter-monitor/:encounterID" component={EncounterMonitorDetails} /> </>

Luego actualice su EncounterMonitorDetails para usar useSearchParams :

 const [searchParams, setSearchParams] = useSearchParams();

Y maneje los parámetros de búsqueda (opcionales) que desea admitir.

 if (searchParams.has("query")) { const query = searchParams.get("query"); // do stuff... }

Al enlazar a una página, puede pasar los parámetros de búsqueda como parte del enlace:

 <Link to="/encounter-monitor?query=foo+bar"> foo bar encounter monitors </Link>
about 4 years ago · Santiago Gelvez Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda