Heim > Web-Frontend > View.js > Wie vue.js Routing-Änderungen überwacht

Wie vue.js Routing-Änderungen überwacht

coldplay.xixi
Freigeben: 2020-11-30 14:45:34
Original
4898 Leute haben es durchsucht

Vue.js-Methode zur Überwachung von Routenänderungen: 1. Der Code wird durch watch implementiert: [watch:{$route(to,from){console.log(to.path);}] 2. Der Schlüssel wird verwendet, um verhindern Für „Wiederverwendung“ lautet der Code [

Wie vue.js Routing-Änderungen überwacht

Die Betriebsumgebung dieses Tutorials: Windows10-System, vue2.9, dieser Artikel gilt für alle Computermarken.

【Empfohlene verwandte Artikel: vue.js

vue.js Methode zur Überwachung von Routing-Änderungen:

Methode 1: Durch Überwachung

// 监听,当路由发生变化的时候执行
watch:{
  $route(to,from){
    console.log(to.path);
  }
},
Nach dem Login kopieren

oder

// 监听,当路由发生变化的时候执行
watch: {
  $route: {
    handler: function(val, oldVal){
      console.log(val);
    },
    // 深度观察监听
    deep: true
  }
},
Nach dem Login kopieren

oder

// 监听,当路由发生变化的时候执行
watch: {
  '$route':'getPath'
},
methods: {
  getPath(){
    console.log(this.$route.path);
  }
}
Nach dem Login kopieren

Methode 2: Der Schlüssel wird verwendet, um eine „Wiederverwendung“ zu verhindern.

Vue bietet Ihnen eine Möglichkeit zu erklären, dass „diese beiden Elemente völlig unabhängig sind – verwenden Sie sie nicht wieder“. Fügen Sie einfach ein Schlüsselattribut mit einem eindeutigen Wert hinzu (Originalwörter aus dem Vue-Dokument).

<router-view :key="key"></router-view>
 
computed: {
  key() {
    return this.$route.name !== undefined? this.$route.name +new Date(): this.$route +new Date()
  }
}
Nach dem Login kopieren

Durch die Verwendung des berechneten Attributs und Date() kann sichergestellt werden, dass der Schlüssel jedes Mal anders ist, sodass die Daten nach Bedarf aktualisiert werden können.

Methode 3: Über die Hook-Funktion von vue-router beforeRouteEnter beforeRouteUpdate beforeRouteLeave

<script>
  // 引入 Tabbar组件
  import mTabbar from &#39;./components/Tabbar&#39;
  import mTabbarItem from &#39;./components/TabbarItem&#39;
  // 引入 vuex 的两个方法
  import {mapGetters, mapActions} from &#39;vuex&#39;
 
  export default {
    name: &#39;app&#39;,
    // 计算属性
    computed:mapGetters([
      // 从 getters 中获取值
      &#39;tabbarShow&#39;
    ]),
    // 监听,当路由发生变化的时候执行
    watch:{
      $route(to,from){
        if(to.path == &#39;/&#39; || to.path == &#39;/Prisoner&#39; || to.path == &#39;/Goods&#39; ||
         to.path == &#39;/Time&#39; || to.path == &#39;/Mine&#39;){
          /**
           * $store来自Store对象
           * dispatch 向 actions 发起请求
           */
          this.$store.dispatch(&#39;showTabBar&#39;);
        }else{
          this.$store.dispatch(&#39;hideTabBar&#39;);
        }
      }
    },
    beforeRouteEnter (to, from, next) {
      // 在渲染该组件的对应路由被 confirm 前调用
      // 不!能!获取组件实例 `this`
      // 因为当钩子执行前,组件实例还没被创建
    },
    beforeRouteUpdate (to, from, next) {
      // 在当前路由改变,但是该组件被复用时调用
      // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
      // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
      // 可以访问组件实例 `this`
    },
    beforeRouteLeave (to, from, next) {
      // 导航离开该组件的对应路由时调用
      // 可以访问组件实例 `this`
    },
    components:{
      mTabbar,
      mTabbarItem
    },
    data() {
      return {
        select:"Building"
      }
    }
  }
</script>
Nach dem Login kopieren

Verwandte kostenlose Lernempfehlungen: JavaScript (Video)

Das obige ist der detaillierte Inhalt vonWie vue.js Routing-Änderungen überwacht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage