回覆列表
  • 1 # 靈貓說技術

    你的問題可能是如何“重新整理”當前頁面

    當使用路由引數時,例如從 /user/foo 導航到 /user/bar,原來的元件例項會被複用。

    因為兩個路由都渲染同個元件,比起銷燬再建立,複用則顯得更加高效。

    不過,這也意味著元件的生命週期鉤子不會再被呼叫。

    複用元件時,想對路由引數的變化作出響應的話,$route.push無效,你可以簡單地 watch (監測變化) $route 物件:

    const User = {

    template: "...",

    watch: {

    "$route" (to, from) {

    // 對路由變化作出響應...

    }

    }

    }

    或者使用 2.2 中引入的 beforeRouteUpdate 導航守衛:

    const User = {

    template: "...",

    beforeRouteUpdate (to, from, next) {

    // react to route changes...

    // don"t forget to call next()

    }

    }

    如何是重新整理當前頁面的話可使用先push到一個空頁再push回來,但是這個方案回導致一個空白效果,常用的是再app.vue定義一個reload方法,再子頁面中呼叫

    // app.vue

    <template>

    <router-view v-if="isRouterAlive"></router-view>

    </template>

    <script>

    export default {

    name: "App",

    provide() {

    return {

    routerReload: this.reload

    };

    },

    data() {

    return {

    isRouterAlive: true

    };

    },

    methods: {

    reload() {

    this.isRouterAlive = false;

    this.$nextTick(() => (this.isRouterAlive = true));

    }

    }

    };

    </script>

    // 頁面

    export default {

    inject: ["routerReload"],

    methods: {

    reload(){

    this.routerReload()

    }

    }

    }

  • 中秋節和大豐收的關聯?
  • 古代的“冠禮”是如何舉行的?