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

135
Views
¿Cómo reaccionar a los cambios de ruta en Vue 3, API de composición de "configuración de script"?

Este es un ejemplo de rutas que tengo en mi aplicación:

 { path: "/something", name: "SomeRoute", component: SomeComponent, meta: {showExtra: true}, }, { path: "/somethingElse", name: "SomeOtherRoute", component: SomeOtherComponent, },

Luego tengo el siguiente componente, que como notará tiene dos etiquetas de script , una con API de composición y otra sin:

 <template> <div> This will always be visible. Also here's a number: {{ number }} </div> <div v-if="showExtra"> This will be hidden in some routes. </div> </template> <script setup lang="ts"> import type { RouteLocationNormalized } from "vue-router" import { ref } from "vue" const number = 5 const showExtra = ref(true) const onRouteChange = (to: RouteLocationNormalized) => { showExtra.value = !!to.meta?.showExtra } </script> <script lang="ts"> import { defineComponent } from "vue" export default defineComponent({ watch: { $route: { handler: "onRouteChange", flush: "pre", immediate: true, deep: true, }, }, }) </script>

Esto funciona correctamente: cuando ingreso una ruta con meta: {showExtra: false} oculta el div adicional, de lo contrario, lo muestra.

Sin embargo, lo que quiero hacer es lograr lo mismo usando solo la API de composición, en otras palabras, eliminando la segunda etiqueta <script> por completo. He intentado esto:

 <script setup lang="ts"> import type { RouteLocationNormalized } from "vue-router" import { ref } from "vue" import { onBeforeRouteUpdate } from "vue-router" // ... // same as before // ... onBeforeRouteUpdate(onRouteChange) </script>

Pero esto no tendrá el efecto esperado cuando cambie de ruta. Soy consciente de la función de watch que podría importar, pero no estoy seguro de cómo obtener la metainformación sobre la ruta y cómo apaciguar al verificador de tipos.

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

0

Puede convertir su observador en una API de composición importando el método de watch desde vue

 <script lang="ts"> import { defineComponent, vue } from "vue" import { useRoute } from "vuex" export default defineComponent({ setup() { const route = useRoute() watch(route, (to) => { showExtra.value = !!to.meta?.showExtra }, {flush: 'pre', immediate: true, deep: true}) }, }) </script>
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!