午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

詳解vue中$router和$route的區(qū)別

瀏覽:38日期:2022-09-30 08:35:40

我們?cè)?vue 項(xiàng)目中一般都會(huì)用到路由,而 vue-router 是 vue.js 官方的路由管理器。

this.$route:當(dāng)前激活的路由的信息對(duì)象。每個(gè)對(duì)象都是局部的,可以獲取當(dāng)前路由的 path, name, params, query 等屬性。

this.$router:全局的 router 實(shí)例。通過(guò) vue 根實(shí)例中注入 router 實(shí)例,然后再注入到每個(gè)子組件,從而讓整個(gè)應(yīng)用都有路由功能。其中包含了很多屬性和對(duì)象(比如 history 對(duì)象),任何頁(yè)面也都可以調(diào)用其 push(), replace(), go() 等方法。

用過(guò) vue 的童鞋都知道,路由跳轉(zhuǎn)分為編程式和聲明式。

聲明式:

簡(jiǎn)單來(lái)說(shuō),就是使用 router-link 組件來(lái)導(dǎo)航,通過(guò)傳入 to 屬性指定鏈接(router-link 默認(rèn)會(huì)被渲染成一個(gè)a標(biāo)簽)。

當(dāng)需要在一個(gè)頁(yè)面中嵌套子路由,并且頁(yè)面不跳轉(zhuǎn)的時(shí)候,這種方式不要太好用啊哈哈哈... 只需要將子頁(yè)面渲染在 router-view 里面就可以了。

編程式:

采用這種方式就需要導(dǎo)入 VueRouter 并調(diào)用了。

然后我再來(lái)嘮嘮 vue-router 的使用步驟(以下采用編程式方式):

1.定義兩個(gè)路由跳轉(zhuǎn)的單 .vue 組件:home.vue 和 user.vue;

2.導(dǎo)入 vue, vue-router,并定義路由,每個(gè)路由包含一個(gè) component 屬性,這個(gè)屬性映射一個(gè)組件 --- router.js

import Vue from ’vue’import Router from ’vue-router’import Home from ’./home.vue’import User from ’./user.vue’Vue.use(Router);

3.創(chuàng)建 router 實(shí)例,并傳遞 routes 配置 --- router.js

const routes = [ { path: ’/home’, component: Home }, { path: ’/user’, component: User }]const router = new Router({ routes})

4.在 vue 根實(shí)例中注入路由,這樣就可以在其他任何組件中訪(fǎng)問(wèn)路由了 --- main.js

import router from ’./router’new Vue({ router, render: h => h(App)}).$mount(’#app’)

大體步驟就以上這些

好了,咱們的豬腳要開(kāi)始現(xiàn)身了?~*在上面 user 和 home 組件內(nèi)訪(fǎng)問(wèn)路由有兩種方式:this.$router和this.$route。這兩種方式使用起來(lái)大致一樣,但還是有區(qū)別。(以下顯示的)

詳解vue中$router和$route的區(qū)別

可以看到this.$route 顯示了當(dāng)前激活的路由的信息對(duì)象。這個(gè)對(duì)象是局部的,可以獲取當(dāng)前路由的 path, name, params, query 等屬性,這里就不細(xì)說(shuō)了。

其中$route.matched是一個(gè)數(shù)組,包含了當(dāng)前路由的所有嵌套記錄,即 routes 配置中的對(duì)象數(shù)組,包括 自己的信息和 children 數(shù)據(jù)。比如我的 routes 配置為:

const router = new VueRouter({ routes: [ // 下面的對(duì)象就是路由記錄 { path: ’/taskList’, component: TaskList, name: ’任務(wù)列表’, children: [{ path: ’/taskDetail’, component: TaskDetail, name: ’任務(wù)詳情’} ] } ]})

得到的 this.$route 中 matched 展開(kāi)結(jié)果為:

詳解vue中$router和$route的區(qū)別

比如用導(dǎo)航守衛(wèi)做登錄功能時(shí),若需要檢測(cè) meta 來(lái)判斷是否需要登錄的情況時(shí),就可以通過(guò)遍歷 $route.matched 來(lái)檢查路由記錄中的 meta 字段。

此外,在 vue 實(shí)例內(nèi)部,還可以通過(guò)this.$router訪(fǎng)問(wèn)路由實(shí)例,它是一個(gè)全局的路由實(shí)例,通過(guò) vue 根實(shí)例中注入 router 實(shí)例,然后再注入到每個(gè)子組件,從而讓整個(gè)應(yīng)用都有路由功能。在任何子組件中打印 this.$router 得到如下:

詳解vue中$router和$route的區(qū)別

其中包含了很多屬性和對(duì)象(比如 history 對(duì)象),任何頁(yè)面也都可以調(diào)用其 push(), replace(), go() 等方法。

push()方法會(huì)向 history 中添加一個(gè)記錄,當(dāng)點(diǎn)擊瀏覽器的返回按鈕時(shí)可以退回到前一個(gè)頁(yè)面,當(dāng)我們點(diǎn)擊 <router-link to=’ ... ’ /> 時(shí)等同于調(diào)用了 this.$router.push()。

this.$router.push() 方法的參數(shù)可以是一個(gè)字符串路徑,或則是一個(gè)地址對(duì)象,例如: this.$router.push(’home’) this.$router.push({path: ’home’})

也可以攜帶參數(shù),但是要注意:如果提供了 path, params 會(huì)被忽略,例如:

this.$router.push({path: ’home’, params: { page: 2}}) 這里的params會(huì)被忽略

同樣的規(guī)則也適用于 router-link 的 to 屬性

可以使用以下幾種方法:

this.$router.push({path: `/home/${page=2}``}) this.$router.push({name: ’home’, params: { page: 2}}) this.$router.push({path: ’home’, query: { page: 2}})

這幾種方法獲取參數(shù)的方式:this.$route.params.page / this.$route.query.page

以上就是詳解vue中$router和$route的區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于vue的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 正在播放国产精品 | 国产另类xxxxhd高清 | 国产一区二区三区免费视频 | 91成人在线看| 亚洲色图另类小说 | juliaannxxx精品艳妇| 免费久久精品 | 全部孕妇毛片丰满孕妇孕交 | av在线第一页 | 一区二区三区高清不卡 | 国产99久久久久久免费看 | 国产日韩片 | 日韩成人免费在线观看 | 在线中文字幕视频 | 尤物国产在线 | 日本激情小视频 | 日本亚洲最大的色成网站www | 一道av | 手机看av | 日本二区三区视频 | 特级丰满少妇一级aaaa爱毛片 | 日韩精品免费一区二区在线观看 | 中文字幕+乱码+中文 | 狠狠2019| 手机在线观看av网站 | 日本一区二区三区精品视频 | 国产在线黄 | 亚洲天堂免费 | 国产精彩视频在线 | 极品少妇xxxx精品少妇偷拍 | 4虎最新网址 | 欧美一级淫片免费视频黄 | 中国成人毛片 | 免费中文字幕日韩欧美 | 91国产丝袜在线播放 | 亚洲欧美综合网 | 日韩天堂在线 | 99视频免费 | 狠狠操中文字幕 | v天堂中文在线 | 日本亚洲国产 |