一、場景:在頁面刷新后,仍然定位到之前菜單欄選中的按鈕,即之前的菜單欄按鈕仍為激活狀態,而非重新定位到第一個默認激活狀態的菜單欄按鈕。
二、1、在element-ui組件庫中,有一個名字為NavMenu導航菜單的組件,<el-menu>標簽上有一個屬性default-active,其值表明當前激活的菜單按鈕對應的組件路由,也可以去掉這個屬性,但刷新頁面后菜單欄激活的按鈕變為第一個,加上這個屬性后頁面刷新后仍然是之前的菜單按鈕為高亮狀態。
2、菜單欄的按鈕很多,所以default-active的值不是靜態的,這里給一個js對象,邏輯里給這個對象動態賦值為當前組件的路由,即每次刷新頁面后默認激活的按鈕對應的仍是當前路由對應的組件。
3、default-active=“activeMenu” // 名字可以隨便取
4、data () { // 頁面的初始化數據
return {
activeMenu: '/home/index', // 值為首頁組件路由,這里是固定的,當路由發生變化時,要改變activeMenu的值為當前路由。
}
},
5、watch: { // 路由監聽:監聽路由的變化,從而做出相應操作
$route: {
immediate: true, // 一旦監聽到路由的變化立即執行
handler(to,from) { // 回調函數,兩個參數,to:當前的組件,from:上一個組件
this.activeMenu = to.path // 給activeMenu重新賦值為當前組件的路由地址
}
}
}
三、路由基礎回顧:
1、route:它是一條路由,根據不同的地址展示不同的內容
2、routes:它是一組路由
3、router:是一個機制,它來管理路由