在專案中遇到一個問題,當進入不同的路由時,根組件的導航欄樣式需要改變,
在主界面時,導航欄樣式應為:

在其他界面時,導航欄樣式應為:

最初解決方案:
一開始想到的解決方案是,當其他界面的組件創建時,向根組件傳遞資料,改變導航欄樣式(導航欄寫在了根組件中) ,
弊端:①實作起來比較困難;②需要給許多組件配置這個方案,很麻煩
最終解決方案:
在需要修改的組件中,通過v-bind指令動態系結導航欄屬性
![]()
![]()
初始化樣式,且通過this.$route.fullPath來獲取當前的地址,
當地址發生變化時,修改導航欄樣式,

此時遇到問題:
發現 path(this.$route.fullPath) 只能獲取到第一次進入網頁時的路徑,當進入不同路由時,path的值不會改變,比如先進入首頁,path的值為'/Home',然后進入文章頁,本來期望path的值變為'/Article',從而重新渲染導航欄,但是此時發現path的值不會改變,導致導航欄不會被重新渲染,
解決辦法
通過watch監聽路由物件,當路由物件發生變化時,重新給path賦值,并呼叫要使用的方法,
?????? 
問題解決!!!
總結:
當路由發生變化,需要重新渲染組件時,可以用一個變數獲取當前路徑,再使用watch來監聽路由變化,當發生變化時,重新給該變數賦值,同時呼叫需要的方法即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/333827.html
標籤:其他

