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

110
Visualizações
¿Cómo detectar el cambio de ruta a través del botón de avance/retroceso del navegador en el enlace de transición del enrutador MobX?

Imagina que tenemos las siguientes dos rutas:

 viewRoute = { name: "View Route", pattern: "/route/view" } editRoute = { name: "Edit Route", pattern: "/route/edit", beforeExit: (fromState, toState, routerStore) => { if (/* route change was triggered by browser button */) { if (confirm("Do you want to discard changes?") { return toState; } else { return fromState; } } } }

Si el usuario redirige de "editar" a "ver" la ruta haciendo clic en los botones "cancelar" o "guardar", no quiero mostrar el cuadro de diálogo descartar-confirmar. Pero si usan los botones del navegador, yo sí.

¿Cómo puedo determinar dentro de un enlace de transición de ruta si ese cambio de ruta fue activado por un botón del navegador? O alternativamente, mediante una llamada directa a routerStore.goTo() ?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Encontré una manera de identificar si una ruta se cambió haciendo clic en un botón, aprovechando RouterState.options para pasar el estado personalizado al gancho de transición.

De componente:

 const Component = () => { const cancelEditing = () => { routerStore.goTo("Edit Route", {}, {ignoreDiscard: true}); } return <button onClick={cancelEditing}>{"Cancel"}</button>; }

Del gancho de transición:

 beforeExit: (fromState, toState) => { if (!toState.options.ignoreDiscard) { if (confirm("Do you want to discard changes?") { return toState; } else { return fromState; } } }

Este estado no se conserva, por lo que al hacer clic en los botones de avance/retroceso del navegador siempre aparecerá un cuadro de diálogo emergente.

Desafortunadamente, este método solo se puede lograr llamando a RouterStore.goTo() directamente ya que no hay accesorios en RouterLink llamados options .

about 4 years ago · Juan Pablo Isaza 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