Vue-Router面試題

一、vue-router有幾種鉤子函數(shù)?具體是什么及其參數(shù)

? ? 1操软、全局路由。(全局導(dǎo)航鉤子主要有兩種鉤子:前置守衛(wèi)宪祥、后置鉤子聂薪。)

? ??????注冊(cè)一個(gè)全局前置守衛(wèi):beforeEach家乘;

const router = new VueRouter({ ... });

router.beforeEach((to, from, next) => {

? ?? // do someting

});

這三個(gè)參數(shù) tofrom 藏澳、next 分別的作用:

? ? 1仁锯、to: Route,代表要進(jìn)入的目標(biāo)笆载,它是一個(gè)路由對(duì)象扑馁;

? ? 2、from: Route凉驻,代表當(dāng)前正要離開的路由腻要,同樣也是一個(gè)路由對(duì)象;

? ? 3涝登、next: Function雄家,這是一個(gè)必須需要調(diào)用的方法,而具體的執(zhí)行效果則依賴 next 方法調(diào)用的參數(shù)胀滚;

????????next參數(shù)須知:

????????????next():進(jìn)入管道中的下一個(gè)鉤子趟济,如果全部的鉤子執(zhí)行完了,則導(dǎo)航的狀態(tài)就是 confirmed(確認(rèn)的)咽笼;

????????????next(false):這代表中斷掉當(dāng)前的導(dǎo)航顷编,即 to 代表的路由對(duì)象不會(huì)進(jìn)入,被中斷剑刑,此時(shí)該表 URL 地址會(huì)被重置到 from 路由對(duì)應(yīng)的地址媳纬;

? ??????????next(‘/’) 和 next({path: ‘/’}):在中斷掉當(dāng)前導(dǎo)航的同時(shí),跳轉(zhuǎn)到一個(gè)不同的地址施掏;

? ??????????next(error):如果傳入?yún)?shù)是一個(gè) Error 實(shí)例钮惠,那么導(dǎo)航被終止的同時(shí)會(huì)將錯(cuò)誤傳遞給 router.onError() 注冊(cè)過的回調(diào);

注意:next 方法必須要調(diào)用七芭,否則鉤子函數(shù)無法 resolved素挽;

? ??????全局后置鉤子:afterEach

router.afterEach((to, from) => {

? ?? // do someting

});

注意:不同于前置守衛(wèi)狸驳,后置鉤子并沒有 next 函數(shù)预明,也不會(huì)改變導(dǎo)航本身

? ??2. 路由獨(dú)享的鉤子

? ??顧名思義,即單個(gè)路由獨(dú)享的導(dǎo)航鉤子耙箍,它是在路由配置上直接進(jìn)行定義的:

cont router = new VueRouter({

? ??routes: [

? ? ? ? {

? ??????????path: '/file',

? ??????????component: File,

? ??????????beforeEnter: (to, from ,next) => {?

? ??????????????// do someting?

? ? ? ? ? ? }

? ? ? ? }

? ? ]

});

注意:參數(shù)的使用贮庞,和全局前置守衛(wèi)是一樣的

3. 組件內(nèi)的導(dǎo)航鉤子

? ??組件內(nèi)的導(dǎo)航鉤子主要有這三種:beforeRouteEnterbeforeRouteUpdate究西、beforeRouteLeave窗慎。他們是直接在路由組件內(nèi)部直接進(jìn)行定義的。

????具體用法:

const File = {

? ??template: `<div>This is file</div>`,

? ??beforeRouteEnter(to, from, next) {

? ??????// do someting

? ??????// 在渲染該組件的對(duì)應(yīng)路由被 confirm 前調(diào)用

? ??},

? ??beforeRouteUpdate(to, from, next) {

? ??????// do someting

? ??????// 在當(dāng)前路由改變,但是依然渲染該組件是調(diào)用?

? ? }遮斥,

? ??beforeRouteLeave(to, from ,next) {

? ??????// do someting

? ??????// 導(dǎo)航離開該組件的對(duì)應(yīng)路由時(shí)被調(diào)用

? ? }

}

注意:beforeRouteEnter 不能獲取組件實(shí)例 this如迟,因?yàn)楫?dāng)守衛(wèi)執(zhí)行前占键,組件實(shí)例被沒有被創(chuàng)建出來扛芽,剩下兩個(gè)鉤子則可以正常獲取組件實(shí)例 this

但是并不意味著在 beforeRouteEnter 中無法訪問組件實(shí)例情萤,我們可以通過給 next 傳入一個(gè)回調(diào)來訪問組件實(shí)例。在導(dǎo)航被確認(rèn)是较屿,會(huì)執(zhí)行這個(gè)回調(diào)隧魄,這時(shí)就可以訪問組件實(shí)例了,如:

beforeRouteEnter(to, from, next) {

? ??next (vm => {

? ??????// 這里通過 vm 來訪問組件實(shí)例解決了沒有 this 的問題

? ??})

}

注意隘蝎,僅僅是 beforRouteEnter 支持給 next 傳遞回調(diào)购啄,其他兩個(gè)并不支持。因?yàn)闅w根結(jié)底嘱么,支持回調(diào)是為了解決 this 問題狮含,而其他兩個(gè)鉤子的 this 可以正確訪問到組件實(shí)例,所有沒有必要使用回調(diào)

最后是完整的導(dǎo)航解析流程:

? ? 1曼振、導(dǎo)航被觸發(fā)

? ? 2几迄、在失活的組件里調(diào)用離開守衛(wèi)

? ? 3、調(diào)用全局的 beforeEach 守衛(wèi)

? ? 4冰评、在重用的組件里調(diào)用 beforeRouteUpdate 守衛(wèi)

? ? 5映胁、在路由配置里調(diào)用 beforEnter

? ? 6、解析異步路由組件

? ? 7甲雅、在被激活的組件里調(diào)用 beforeRouteEnter

? ? 8解孙、調(diào)用全局的 beforeResolve 守衛(wèi)

? ? 9、導(dǎo)航被確認(rèn)

? ? 10务荆、調(diào)用全局的 afterEach 鉤子

? ? 11、觸發(fā) DOM 更新

? ? 12穷遂、在創(chuàng)建好的實(shí)例調(diào)用 beforeRouteEnter 守衛(wèi)中傳給 next 的回調(diào)函數(shù)

二函匕、如何配置動(dòng)態(tài)路由

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蚪黑,隨后出現(xiàn)的幾起案子盅惜,更是在濱河造成了極大的恐慌,老刑警劉巖忌穿,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抒寂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡掠剑,警方通過查閱死者的電腦和手機(jī)屈芜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人井佑,你說我怎么就攤上這事属铁。” “怎么了躬翁?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵焦蘑,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我盒发,道長(zhǎng)例嘱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任宁舰,我火速辦了婚禮拼卵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘明吩。我一直安慰自己间学,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布印荔。 她就那樣靜靜地躺著低葫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仍律。 梳的紋絲不亂的頭發(fā)上嘿悬,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音水泉,去河邊找鬼善涨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛草则,可吹牛的內(nèi)容都是我干的钢拧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼炕横,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼源内!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起份殿,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤膜钓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后卿嘲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颂斜,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年拾枣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沃疮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盒让。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖忿磅,靈堂內(nèi)的尸體忽然破棺而出糯彬,到底是詐尸還是另有隱情,我是刑警寧澤葱她,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布撩扒,位于F島的核電站,受9級(jí)特大地震影響吨些,放射性物質(zhì)發(fā)生泄漏搓谆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一豪墅、第九天 我趴在偏房一處隱蔽的房頂上張望泉手。 院中可真熱鬧,春花似錦偶器、人聲如沸斩萌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颊郎。三九已至,卻和暖如春霎苗,著一層夾襖步出監(jiān)牢的瞬間姆吭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工唁盏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留内狸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓厘擂,卻偏偏與公主長(zhǎng)得像昆淡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刽严,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355