1. 程式人生 > 實用技巧 >vue元件複用時,頁面不重新整理

vue元件複用時,頁面不重新整理

一、 keep-alive包裹的元件,在actived的鉤子函式總進行呼叫。

二、在使用Vue-router做專案時,會遇到如/serviceId/:id這樣只改變id號的場景。由於router-view是複用的,單純的改變id號並不會重新整理router-view。

  當然,我們可以在點選事件上加上router.go(0),強制重新整理整個頁面來滿足效果,但頁面整體的重新整理會使體驗下降。

解決方案有以下幾種:

1、使用watch方法:當id發生變化時,'$route'也會相應地發生變化,因此可以通過watch的方法來進行操作

1 watch: {
2   '$route': function (to, from) {
3 // 我這裡還是用了Vuex,不過應該不影響理解 4 this.$store.dispatch('updateActiveTemplateId', this.$route.params.templateId) 5 // 通過更新Vuex中的store的資料,讓資料發生變化 6 this.getTemplateById() 7   } 8 },
1 watch: {
2     //監聽相同路由下引數變化的時候,從而實現非同步重新整理
3     $route(to, from) {
4       //要處理的操作
5     }
6   }

2、通過改變router-view中的key來達到重新整理元件的目的,我現在用的就是這種方法(因為我使用的按需載入,所以載入元件也不會載入所有介面)

* 按需引入(路由懶載入):在router/index.js中,

() => import("../views/company.vue") //路由懶載入
這種方法進行路由懶載入
1 <router-view :key="$route.fullPath" />

3、在beforeRouteLeave鉤子函式中進行呼叫

1 beforeRouteLeave (to, from, next) {
2     // 導航離開該元件的對應路由時呼叫
3 // 可以訪問元件例項 `this` 4 }