vue通過ID(參數)修改URL復用同一個頁面(組件)不重新加載的問題


項目中經常會用到同一個頁面,結構是相同的,我只是在vue-router中通過添加參數的方式來區分狀態,參數可以在頁面跳轉時帶上params,或者query,但是有一個問題,即使我們修改了參數,URL也顯示已經改變,但頁面並不會刷新,因為路由是相同的,vue就會認為你是同一個頁面,從而復用已加載的頁面,而不會重新加載,所以如果在created鈎子中來區分狀態明顯是行不通的,可以通過watch監聽事件來監聽路由的變化:

watch: {
          '$route' (to, from) {
                     if (to.name === 'projectAdd') {
                             console.log(to.query)     // 在此調用函數
                      }
           }
}
 
通過watch監聽即可實現,這里順帶說一下params和query的區別:
 
相同
使用方法相同,都是在路由跳轉的時候帶過去:
manageProject (toseId) {
           this.$router.push({
                   name: 'projectAdd',
                    query: {toseId: toseId}       //   params: {toseId: toseId}
           })
}
 
不同
params需要在路由設置index.js中添加參數(
path: '/projectAdd/:id'),而query不需要;
 
跳轉后在URL的顯示不同,params顯示的是(http://localhost:8082/#/projectAdd/6),query顯示的是(http://localhost:8082/#/projectAdd?toseId=6);
 
接收方式不同,params為this.$route.params,query為this.$route.query。
 
 
 
若有錯誤之處請指出,我會盡快改正,希望對你有幫助
 
 


免責聲明!

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



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