嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片

新版vue-router的hooks用法

2020-5-2    seo達(dá)人

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


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


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




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


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


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


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

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


{

   path: '/:id'

}

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


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

在組件中是這樣獲取這個(gè)參數(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內(nèi)置的了,找了半天發(fā)現(xiàn)沒有$route了,只剩下了一個(gè)$router,估計(jì)vue-router 4.0把當(dāng)前路由信息都轉(zhuǎn)移到$router里面去了。


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




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)路由的時(shí)候報(bào)了一個(gè)在undefined上面沒有push的錯(cuò)誤。


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


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




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


vue-router里的hooks

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


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


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


import { useXxx } from 'vue-router'

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


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




果不其然,在第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ù),這次再打包試了一下,果然就沒有之前的那個(gè)報(bào)錯(cuò)了。


結(jié)語

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


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


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

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

日歷

鏈接

個(gè)人資料

存檔

嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片
<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • 免费国产一区二区| 欧美在线黄色| 亚洲欧美日韩国产精品| 999亚洲国产精| 日韩午夜免费| 制服丝袜亚洲播放| 销魂美女一区二区三区视频在线| 亚洲免费在线看| 亚洲欧美国产高清va在线播| 亚洲免费在线视频| 久久精品最新地址| 亚洲黑丝在线| 亚洲乱码视频| 性娇小13――14欧美| 久久午夜电影网| 欧美日韩亚洲精品内裤| 国产尤物精品| 亚洲精选91| 久久激情五月激情| 免费国产自线拍一欧美视频| 亚洲高清自拍| 亚洲精品五月天| 国产精品高潮呻吟久久av无限 | 嫩草成人www欧美| 亚洲人成久久| 午夜激情一区| 欧美巨乳在线观看| 激情综合自拍| 亚洲男女自偷自拍| 亚洲高清视频中文字幕| aa国产精品| 美女视频一区免费观看| 国产日韩av在线播放| 99ri日韩精品视频| 美女脱光内衣内裤视频久久网站| 99精品久久| 欧美电影美腿模特1979在线看| 国产视频在线观看一区二区三区 | 久久国产福利| 国产精品呻吟| 亚洲午夜羞羞片| 亚洲大片av| 久久综合久久美利坚合众国| 国产视频一区免费看| 亚洲欧美日韩一区二区三区在线| 亚洲国产精品电影| 久久免费视频在线观看| 久久人人爽人人爽爽久久| 国产日韩综合| 欧美亚洲系列| 亚洲欧美不卡| 国产精品免费网站在线观看| 一区二区三区视频在线观看| 亚洲国产精品999| 久久夜色精品国产| 亚洲第一区中文99精品| 老色鬼久久亚洲一区二区| 亚洲一区二区三区在线视频| 欧美日韩福利视频| 在线视频你懂得一区二区三区| 亚洲国产一区二区三区高清| 久久午夜视频| 亚洲精品影视| 99国产精品久久久久久久久久 | 欧美高清视频一区| 久久久久欧美| 亚洲欧洲三级| 亚洲乱码国产乱码精品精天堂| 欧美喷水视频| 欧美日韩视频在线第一区| 久久久精品免费视频| 国产一区在线播放| 蜜桃av久久久亚洲精品| 久久综合导航| 麻豆成人在线| 欧美一二三视频| 欧美一级黄色录像| 激情久久一区| 亚洲第一精品久久忘忧草社区| 麻豆国产精品va在线观看不卡| 在线日本成人| 亚洲三级视频| 国产欧美日韩综合一区在线观看| 久久精品人人做人人综合| 久久久www成人免费精品| 伊人久久亚洲美女图片| 亚洲国产婷婷香蕉久久久久久99| 欧美日韩色婷婷| 午夜精品福利电影| 久久精品日韩欧美| 一区二区三区日韩精品| 午夜精品福利一区二区蜜股av| 狠狠色伊人亚洲综合网站色| 亚洲二区视频| 国产视频在线观看一区| 欧美国产日本高清在线| 欧美色图麻豆| 久久野战av| 欧美日韩在线电影| 久久蜜桃av一区精品变态类天堂| 久久久精品tv| 亚洲欧美激情视频在线观看一区二区三区 | 免费亚洲电影在线| 亚洲电影免费| 一本一本久久| 久久精品导航| 香蕉久久一区二区不卡无毒影院| 久久伊人精品天天| 欧美在线视频观看| 欧美日韩一区在线观看视频| 欧美成人自拍| 国产一区二区三区四区三区四| 日韩系列在线| 亚洲精品小视频在线观看| 午夜精品福利一区二区三区av| 亚洲激情婷婷| 久久男人资源视频| 欧美一区激情| 国产精品99一区| 日韩一二三在线视频播| 亚洲国产精品美女| 久久男人资源视频| 久热精品视频在线| 国产亚洲精品成人av久久ww| 亚洲麻豆一区| 一个色综合av| 欧美国产日韩一区二区三区| 蜜桃av一区二区| 精品成人免费| 久久久久久久网站| 国产在线一区二区三区四区| 黄色成人在线免费| 亚洲午夜av| 亚洲一区影院| 欧美日韩视频在线| 欧美xxx成人| 牛牛影视久久网| 蜜乳av另类精品一区二区| 国产欧美精品日韩区二区麻豆天美| 在线亚洲欧美视频| 亚洲一区精彩视频| 国产精品视频一二| 亚洲欧美日韩区| 久久精品在线视频| 亚洲电影免费观看高清| 欧美激情一区二区在线| 亚洲精品乱码久久久久| 99热这里只有精品8| 欧美日韩一区二区在线视频| 亚洲视频香蕉人妖| 午夜精品久久久久久久| 国产欧美日韩91| 久久激情五月丁香伊人| 免费日韩成人| 亚洲国产一区二区三区青草影视| 欧美成人一区二区在线 | 亚洲乱码国产乱码精品精可以看| 亚洲美女黄色| 国产精品美女久久| 久久精品99国产精品日本| 欧美成人免费在线| 一区二区三区国产精华| 国产免费亚洲高清| 噜噜爱69成人精品| 中日韩在线视频| 久久亚洲不卡| 99热精品在线观看| 国产一区二区三区久久精品| 久久综合亚洲社区| 亚洲调教视频在线观看| 欧美经典一区二区三区| 韩国精品一区二区三区| 美女久久一区| 亚洲免费一区二区| 欧美激情精品久久久久久免费印度| 亚洲一级免费视频| 禁久久精品乱码| 欧美三级乱码| 欧美va亚洲va国产综合| 欧美一区二区精品| 亚洲欧洲一区二区在线播放| 久久国产天堂福利天堂| 亚洲精品五月天| 伊人激情综合| 国产欧美91| 国产精品theporn| 美女视频黄免费的久久| 午夜国产精品视频| 日韩视频一区二区三区在线播放 | 亚洲美女在线视频| 久久综合五月| 欧美一区二区三区四区视频| 亚洲另类在线视频| 悠悠资源网久久精品| 国产精品日韩精品欧美在线 | 黄色成人片子| 欧美激情中文字幕在线| 午夜精品国产精品大乳美女| 亚洲美女黄网| 欧美国产一区二区在线观看 |