日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

vue-router的hooks用法詳解

瀏覽:26日期:2023-01-14 18:03:23

雖然Vue 3還沒有正式發(fā)布,但是熱愛新技術(shù)的我早已按捺不住自己的內(nèi)心,開始嘗試在小項(xiàng)目中使用它了。

根據(jù)這篇《今日凌晨Vue3 beta版震撼發(fā)布,竟然公開支持腳手架項(xiàng)目!》我搭建了一個Vue 3的腳手架項(xiàng)目,用這種方式搭建的腳手架項(xiàng)目不僅僅只有vue是新版的,就連vue-router、vuex都是最新的。

給大家截一下package.json的圖:

vue-router的hooks用法詳解

可以看到vue-router和vuex都已經(jīng)開啟4.0時代啦!

不過其實(shí)我并沒有去了解過vue-router 4.0的新用法什么的,因?yàn)槲矣X得它不像vue 3.0都已經(jīng)進(jìn)行到beta的版本不會有特別大的變動。

而vue-router 4.0還是alpha的階段,所以我認(rèn)為現(xiàn)在去學(xué)習(xí)它有些為時尚早。但卻就是它!差點(diǎn)釀成了一場慘劇。

舊版vue + vue-router的使用方式

假如你在路由里面定義了一個動態(tài)參數(shù)通常都會這么寫:

{ path: ’/:id’}

然后用編程式導(dǎo)航的時候通常會這樣去寫:

this.$router.push(’/123’)

在組件中是這樣獲取這個參數(shù)的:

this.$route.params.id

我以為的新版vue + vue-router的使用方式

由于vue 3.0的Composition API中沒有this了,所以我想到了通過獲取組件實(shí)例的方式來獲取$route:

import { defineComponent, getCurrentInstance } from ’vue’export default defineComponent((props, context) => { const { ctx } = getCurrentInstance() console.log(ctx.$route)})

沒想到打印出來的居然是undefined!這是咋回事呢?于是我又打印了一遍ctx(ctx是當(dāng)前組件上下文):

vue-router的hooks用法詳解

沒有$的那些字段是我在組件中自己定義的變量,帶$的這些就是vue內(nèi)置的了,找了半天發(fā)現(xiàn)沒有$route了,只剩下了一個$router,估計vue-router 4.0把當(dāng)前路由信息都轉(zhuǎn)移到$router里面去了。

帶著猜想,我點(diǎn)開了$router:

vue-router的hooks用法詳解

currentRoute! 看名字的話感覺應(yīng)該就是它了!于是乎我:

import { defineComponent, getCurrentInstance } from ’vue’export default defineComponent((props, context) => { const { ctx } = getCurrentInstance() console.log(ctx.$router.currentRoute.value.params.id)})

果然獲取到了!好開心!

實(shí)際的新版vue + vue-router用法

在接下來的過程中我用ctx.$router代替了原來的this.$router、用ctx.$router.currentRoute.value代替了原先的this.$route。

盡管在接下來的進(jìn)度中并沒有出現(xiàn)任何的bug,程序一直都是按照我所設(shè)想的那樣去運(yùn)行的。

但在項(xiàng)目打包后卻出現(xiàn)了意想不到的bug:在跳轉(zhuǎn)路由的時候報了一個在undefined上面沒有push的錯誤。

奇了怪了,在開發(fā)階段程序都沒有任何的報錯怎么一打包就不行了呢?依靠多年的開發(fā)經(jīng)驗(yàn),我很快就定位到了是vue-router的錯誤。

難道這樣寫是錯的嗎?可是我打印了ctx,它里面明明有一個$router、$router里面明明就有currentRoute、currentRoute里面明明就有一個value、value里面明明就有params、params里面我一點(diǎn)開明明就看到了傳過來的參數(shù)啊:

vue-router的hooks用法詳解

估計可能是vue-router的bug,果然alpha階段的產(chǎn)物不靠譜,我開始后悔使用新版的vue腳手架項(xiàng)目了。

vue-router里的hooks

不過這時我突然靈光一現(xiàn),vue 3不是受到了react hooks的啟發(fā)才產(chǎn)生了Composition API的嗎?

那么估計vue-router肯定也會受到react-router的啟發(fā)了!

還好我學(xué)過react,果然技多不壓身啊!估計里面肯定是有一個useXxx,就像這樣:

import { useXxx } from ’vue-router’

那么應(yīng)該是use什么呢?按理來說應(yīng)該會盡量的和以前的API保持一定的聯(lián)系,我猜應(yīng)該是useRoute和useRouter吧!

為了驗(yàn)證我的想法,我打開了node_modules找到了vue-router的源碼:

vue-router的hooks用法詳解

果不其然,在第2454和第2455行我發(fā)現(xiàn)它導(dǎo)出了useRoute和useRouter,那么就是它了:

import { defineComponent } from ’vue’import { useRoute, useRouter } from ’vue-router’export default defineComponent(_ => { const route = useRoute() const router = useRouter() console.log(route.params.id) router.push(’/xxx/xxx’)})

使用這種方式不但可以成功跳轉(zhuǎn)路由,也同樣可以獲取到路由傳過來的參數(shù),這次再打包試了一下,果然就沒有之前的那個報錯了。

結(jié)語

估計以后的vue全家桶要開啟全民hooks的時代了,在翻看源碼的同時我發(fā)現(xiàn)他們把一些示例都寫在了vue-router/playground文件夾下了,在里面我發(fā)現(xiàn)了一些有趣的用法。

如果有時間的話我會仔細(xì)研究一下然后出一篇更加深入的文章給大家,當(dāng)然如果已經(jīng)有小伙伴等不及我出新文章的話可以直接進(jìn)入vue-router-next的github地址:

https://github.com/vuejs/vue-router-next

它的示例都放在了playground這個文件夾下,期待你們研究明白后出一篇更加深入的文章!

到此這篇關(guān)于vue-router的hooks用法的文章就介紹到這了,更多相關(guān)vue-router hooks用法內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Vue
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩欧美精品一区二区综合视频| 亚洲制服一区| 亚洲精品看片| 日本欧美在线| 麻豆久久精品| 蜜桃视频免费观看一区| 久久久久国产精品一区三寸| 亚洲成人不卡| 久久久久伊人| av中文字幕在线观看第一页| 久久精品色播| 红杏一区二区三区| 国产三级一区| 欧美在线看片| 日韩电影在线视频| 蜜臀精品久久久久久蜜臀| 综合国产精品| 日韩av不卡在线观看| 日韩一区电影| 欧美~级网站不卡| 久久午夜影视| 国产拍在线视频| 蜜臀久久99精品久久久久宅男| 免费的成人av| 三上悠亚国产精品一区二区三区| 群体交乱之放荡娇妻一区二区| 日韩在线视频精品| 日韩一区精品视频| 精品国产午夜肉伦伦影院| 亚洲欧洲另类| 先锋影音久久久| 欧美激情五月| 欧美日韩亚洲一区三区| 六月丁香综合在线视频| 亚洲深夜福利在线观看| 国产精品免费不| 国产99精品| 精品久久久中文字幕| 亚洲电影在线一区二区三区| 日韩欧美另类一区二区| 免费在线观看一区| 福利一区视频| 精品免费av在线| 樱桃成人精品视频在线播放| 欧美另类专区| 日韩国产高清在线| 久久一区精品| 自由日本语亚洲人高潮| 少妇精品久久久一区二区| 国产日韩欧美中文在线| 亚洲一区二区成人| 久久av超碰| 国产欧美另类| 你懂的国产精品| 偷拍亚洲精品| 国产一区一一区高清不卡| 亚洲欧美专区| 精品女同一区二区三区在线观看| 石原莉奈一区二区三区在线观看| 久久中文亚洲字幕| 99视频精品视频高清免费| 日韩精品免费一区二区在线观看 | 久久亚洲二区| 中文在线а√天堂| 久久国产成人午夜av影院宅| 国产精品中文字幕亚洲欧美| 亚洲精品福利| 亚洲精品在线国产| 午夜宅男久久久| 五月天综合网站| 亚洲免费福利| 美女av一区| 精品久久电影| 视频福利一区| 亚洲一级淫片| 成人午夜在线| 日韩国产欧美在线播放| 国产精品男女| 97久久中文字幕| 奶水喷射视频一区| 精品免费av在线| 日本综合精品一区| 亚洲激精日韩激精欧美精品| 日韩精品福利一区二区三区| 日韩在线麻豆| 麻豆精品在线观看| 91精品蜜臀一区二区三区在线 | 亚洲电影有码| 国产精品日本欧美一区二区三区| 亚洲女同中文字幕| 蜜臀av亚洲一区中文字幕| 日韩精品久久理论片| 91成人在线网站| 精品日韩毛片| 超碰成人av| 夜夜精品视频| 精品日韩在线| 欧美日韩亚洲国产精品| 日韩精选在线| 国产毛片久久久| 欧美xxxx中国| 亚洲精品精选| 欧美日韩中文字幕一区二区三区| 国产精品一区二区三区av麻| av不卡在线看| 在线视频观看日韩| 在线一区二区三区视频| 国产精品第一| 一区二区三区午夜视频| 激情六月综合| 丝袜美腿成人在线| 先锋影音久久久| 欧美1区2区3| 久久av在线| 999精品一区| 麻豆精品在线观看| 国产精品麻豆成人av电影艾秋| 精品一区亚洲| 国产美女一区| 国产精品videossex| 国产伦久视频在线观看| 国产精品久久免费视频| 欧美特黄一区| 日韩av一级| 亚洲播播91| 国产色综合网| 久久国产精品99国产| 国产精品亚洲片在线播放| av资源中文在线| 精品香蕉视频| 精品国产免费人成网站| 成人亚洲一区| 久久影院一区| 青草国产精品| 亚洲高清激情| 精品国产欧美日韩| 美女久久一区| 中文字幕一区二区精品区| 免费人成在线不卡| 91精品国产经典在线观看 | 日本精品不卡| 国产精品99一区二区三| 日本久久成人网| 国产亚洲一区在线| 国产精品亚洲综合久久| 日韩亚洲国产欧美| 国产精品久久观看| 亚洲日本网址| 日韩精品亚洲一区二区三区免费| 国产探花在线精品| 欧美在线亚洲综合一区| 久久精品国产999大香线蕉| 夜夜精品视频| 99riav1国产精品视频| 国产欧美日韩精品高清二区综合区 | 久久99久久久精品欧美| 麻豆精品91| 日本高清久久| 中文字幕在线官网| 中文字幕亚洲精品乱码| 久久精品免费看| 亚洲激精日韩激精欧美精品| 久久精品理论片| 另类国产ts人妖高潮视频| 黄色不卡一区| 天海翼精品一区二区三区| 欧美日韩国产综合网| 国产在线一区不卡| 亚洲精品欧美| 99热精品在线| 一区在线视频观看| 日韩极品在线观看| 日本视频一区二区| 日韩精品一区二区三区av| 国产美女久久| 国产欧美日韩一级| 免费在线观看视频一区| 久久久久99| 麻豆91小视频| 国产一区二区三区探花| 最新中文字幕在线播放| 精品精品99| 香蕉精品久久| 欧洲激情综合| 欧美亚洲激情| 播放一区二区| 丝袜美腿诱惑一区二区三区| 好看的亚洲午夜视频在线| 亚洲精选av| 1024精品久久久久久久久| 日韩一区二区三区免费播放| 精品午夜视频| 国产一区二区三区黄网站| 日本aⅴ亚洲精品中文乱码| 日韩精品一级| 久久国产中文字幕| 久久国产生活片100| 国产伦精品一区二区三区视频| 91精品麻豆| 免费在线观看一区二区三区|