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 }

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM