vue路由監(jiān)聽(tīng)的一些常用方式
場(chǎng)景:
我們?cè)谧鲰?xiàng)目時(shí),會(huì)遇到部分需求是根絕路由的切換來(lái)判斷某些值,下面介紹部分常用的監(jiān)聽(tīng)方式
一、 通過(guò) watch 進(jìn)行監(jiān)聽(tīng)
// 方式1、監(jiān)聽(tīng)路由 $route 變化 一般監(jiān)聽(tīng)
export default{
watch: {
$route(to, from){
console.log('路由變化了')
console.log('當(dāng)前頁(yè)面路由:' + to.path);
console.log('上一個(gè)路由:' + from);
},
}
}
// 方式2、監(jiān)聽(tīng)路由 $route 變化, 使用handler函數(shù) 深度監(jiān)聽(tīng)路由
export default{
watch: {
'$route': { // $route可以用引號(hào),也可以不用引號(hào) 監(jiān)聽(tīng)的對(duì)象
handler(to, from){
console.log('路由變化了')
console.log('當(dāng)前頁(yè)面路由:' + to);
console.log('上一個(gè)路由:' + from);
},
deep: true, // 深度觀察監(jiān)聽(tīng) 設(shè)置為 true
immediate: true, // 第一次初始化渲染就可以監(jiān)聽(tīng)到
}
}
}
// 方式3、監(jiān)聽(tīng)路由 $route 變化,觸發(fā)methods里的方法
export default{
watch: {
'$route': 'initData'
},
methods: {
initData(){
console.log('路由變化了')
}
}
}
// 方式4、監(jiān)聽(tīng)路由的 path 變化
export default{
watch: {
'$route.path'(toPath, fromPath){
console.log('路由變化了')
console.log('當(dāng)前頁(yè)面路由地址:' + toPath)
console.log('上一個(gè)路由地址:' + fromPath)
},
}
}
// 方式5、監(jiān)聽(tīng)路由的 path 變化, 使用handler函數(shù)
export default{
watch: {
'$route.path': {
handler(toPath, fromPath){
console.log('路由變化了')
console.log('當(dāng)前頁(yè)面路由地址:' + toPath)
console.log('上一個(gè)路由地址:' + fromPath)
},
deep: true, // 深度監(jiān)聽(tīng)
immediate: true, // 第一次初始化渲染就可以監(jiān)聽(tīng)到
}
}
}
// 方式6、監(jiān)聽(tīng)路由的 path 變化,觸發(fā)methods里的方法
export default{
watch: {
'$route.path': 'initData'
},
methods: {
initData(){
console.log('路由變化了')
}
}
}二、通過(guò)鉤子函數(shù)beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave進(jìn)行監(jiān)聽(tīng)
export default{
beforeRouteEnter(to, from, next){
// 渲染該組件前調(diào)用這個(gè)鉤子,因此組件還未被創(chuàng)建,不能獲取this
console.log(this) // 結(jié)果為:undefined
console.log('beforeRouteEnter')
next()
},
beforeRouteUpdate(to, from, next){
//這個(gè)組件是被復(fù)用的時(shí)候調(diào)用,比如帶有動(dòng)態(tài)參數(shù)的路由跳轉(zhuǎn):/add/11 跳轉(zhuǎn)到 /detail/12
console.log(this) // 可以訪問(wèn)this
console.log('beforeRouteUpdate')
next()
},
beforeRouteLeave(to, from, next){
// 導(dǎo)航離開(kāi)當(dāng)前路由的時(shí)候被調(diào)用,this可以被訪問(wèn)到
console.log(this) // 可以訪問(wèn)this
console.log('beforeRouteLeave')
next()
},
}三、全局路由監(jiān)聽(tīng) this.$router.beforeEach
// 方式1、在App.vue的create中進(jìn)行全局路由監(jiān)聽(tīng)
export default {
name: 'App',
created() {
this.$router.beforeEach((to, from, next) => {
console.log(to);
console.log(from);
next()
})
}
}
// 方式2、在路由文件(/router/index.js)中進(jìn)行全局路由監(jiān)聽(tīng)
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
let routes = [
{
path: '/login',
component: resolve => require(['@/views/login'], resolve),
},
]
let router = new Router({
mode: 'history', // 去掉 url 中的 #
scrollBehavior: () => ({ y: 0 }),
base: process.env.VUE_APP_BASE_DOMAIN,
routes,
})
router.beforeEach((to, from, next) => {
console.log(to);
console.log(from);
next()
})
export {
routes
router
}總結(jié)
到此這篇關(guān)于vue路由監(jiān)聽(tīng)的一些常用方式的文章就介紹到這了,更多相關(guān)vue路由監(jiān)聽(tīng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue3之組件狀態(tài)保持KeepAlive的簡(jiǎn)單使用
這篇文章主要介紹了Vue3之組件狀態(tài)保持KeepAlive的簡(jiǎn)單使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
詳解vue-cli之webpack3構(gòu)建全面提速優(yōu)化
這篇文章主要介紹了詳解vue-cli之webpack3構(gòu)建全面提速優(yōu)化,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
用 Vue.js 遞歸組件實(shí)現(xiàn)可折疊的樹(shù)形菜單(demo)
通過(guò)本文給您演示一下如何有效地使用遞歸組件,我將通過(guò)建立一個(gè)可擴(kuò)展/收縮的樹(shù)形菜單的來(lái)一步步進(jìn)行。下面通過(guò)本文給大家分享用 Vue.js 遞歸組件實(shí)現(xiàn)可折疊的樹(shù)形菜單,需要的朋友參考下吧2017-12-12
Vue.js項(xiàng)目中管理每個(gè)頁(yè)面的頭部標(biāo)簽的兩種方法
這篇文章主要介紹了Vue.js項(xiàng)目中管理每個(gè)頁(yè)面的頭部標(biāo)簽的兩種方法,需要的朋友可以參考下2018-06-06
詳解vue-property-decorator使用手冊(cè)
這篇文章主要介紹了vue-property-decorator使用手冊(cè),文中較詳細(xì)的給大家介紹了他們的用法,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
在vue中axios設(shè)置timeout超時(shí)的操作
這篇文章主要介紹了在vue中axios設(shè)置timeout超時(shí)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
vue使用WEB自帶TTS實(shí)現(xiàn)語(yǔ)音文字互轉(zhuǎn)的操作方法
這篇文章主要介紹了vue使用WEB自帶TTS實(shí)現(xiàn)語(yǔ)音文字互轉(zhuǎn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
vue如何通過(guò)id從列表頁(yè)跳轉(zhuǎn)到對(duì)應(yīng)的詳情頁(yè)
這篇文章主要介紹了vue如何通過(guò)id從列表頁(yè)跳轉(zhuǎn)到對(duì)應(yīng)的詳情頁(yè) ,需要的朋友可以參考下2018-05-05
vue $set 給數(shù)據(jù)賦值的實(shí)例
今天小編就為大家分享一篇vue $set 給數(shù)據(jù)賦值的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11

