Maison  >  Questions et réponses  >  le corps du texte

Observez les changements d'itinéraire global et effectuez certaines opérations dans Nuxt2

J'utilise Nuxt JS v2 et j'ai besoin d'exécuter une fonction à chaque changement de page et chargement de page, je sais que je peux ajouter un observateur d'itinéraire dans la mise en page, mais cela signifie qu'il doit être ajouté à chaque mise en page, j'en ai plusieurs, tel que :

<script>
export default {
  watch: {
    $route(to, from) {
      console.log('route change to', to)
      console.log('route change from', from)
    }
  }
}
</script>

J'ai un plugin appelé cookie-tracking.js et j'espérais que si j'y ajoutais un console.log, il serait appelé à chaque changement de page, mais non, que pourrais-je ajouter pour que ce comportement se produise :

export default ({ app, route }, inject) => {
  console.log('run on each page change...')
}

P粉649990163P粉649990163303 Il y a quelques jours488

répondre à tous(1)je répondrai

  • P粉145543872

    P粉1455438722023-12-22 15:47:12

    Puisque le routeur Nuxt2 est basé sur Vue-Router3, lorsque vous utilisez à la fois push({name: ''}) et <代码>path('path string')

    layout/default.vue

    // https://v3.router.vuejs.org/api/#route-object-properties
    computed: {
        fullPath() {
            return this.$route.fullPath;
        },
        path() {
            return this.$route.path;
        }
    },
    watch: {
        // /a/b?c=d => /a/b?c=e will trigger this
        fullPath(newFullPath) {
            // do something
        },
        // /a/b => /a/c will trigger this, the above won't
        path(newPath) {
            // do something
        }
    }
    
    // or just watch with quote
    
    watch: {
        '$route.fullPath'(newFullPath) {
            // do something
        },
    }

    Compte tenu de votre cas d'utilisation (cookie-tracking.js), vous ne pouvez déclencher l'événement qu'une seule fois lors du changement de chemin, vous pouvez donc le mettre dans layout/default.vue< /strong> au lieu de chaque Nuxt-Page-Component, si vous avez plusieurs mises en page, vous pourriez envisager de refactoriser votre code en mixin

    répondre
    0
  • Annulerrépondre