国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

詳解vue中$router和$route的區別

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

我們在 vue 項目中一般都會用到路由,而 vue-router 是 vue.js 官方的路由管理器。

this.$route:當前激活的路由的信息對象。每個對象都是局部的,可以獲取當前路由的 path, name, params, query 等屬性。

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

用過 vue 的童鞋都知道,路由跳轉分為編程式和聲明式。

聲明式:

簡單來說,就是使用 router-link 組件來導航,通過傳入 to 屬性指定鏈接(router-link 默認會被渲染成一個a標簽)。

當需要在一個頁面中嵌套子路由,并且頁面不跳轉的時候,這種方式不要太好用啊哈哈哈... 只需要將子頁面渲染在 router-view 里面就可以了。

編程式:

采用這種方式就需要導入 VueRouter 并調用了。

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

1.定義兩個路由跳轉的單 .vue 組件:home.vue 和 user.vue;

2.導入 vue, vue-router,并定義路由,每個路由包含一個 component 屬性,這個屬性映射一個組件 --- 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.創建 router 實例,并傳遞 routes 配置 --- router.js

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

4.在 vue 根實例中注入路由,這樣就可以在其他任何組件中訪問路由了 --- main.js

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

大體步驟就以上這些

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

詳解vue中$router和$route的區別

可以看到this.$route 顯示了當前激活的路由的信息對象。這個對象是局部的,可以獲取當前路由的 path, name, params, query 等屬性,這里就不細說了。

其中$route.matched是一個數組,包含了當前路由的所有嵌套記錄,即 routes 配置中的對象數組,包括 自己的信息和 children 數據。比如我的 routes 配置為:

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

得到的 this.$route 中 matched 展開結果為:

詳解vue中$router和$route的區別

比如用導航守衛做登錄功能時,若需要檢測 meta 來判斷是否需要登錄的情況時,就可以通過遍歷 $route.matched 來檢查路由記錄中的 meta 字段。

此外,在 vue 實例內部,還可以通過this.$router訪問路由實例,它是一個全局的路由實例,通過 vue 根實例中注入 router 實例,然后再注入到每個子組件,從而讓整個應用都有路由功能。在任何子組件中打印 this.$router 得到如下:

詳解vue中$router和$route的區別

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

push()方法會向 history 中添加一個記錄,當點擊瀏覽器的返回按鈕時可以退回到前一個頁面,當我們點擊 <router-link to=’ ... ’ /> 時等同于調用了 this.$router.push()。

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

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

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

同樣的規則也適用于 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}})

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

以上就是詳解vue中$router和$route的區別的詳細內容,更多關于vue的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
主站蜘蛛池模板: 失禁h啪肉尿出来高h男男 | 三级国产在线观看 | 成年美女黄网站小视频 | 久草在线免费播放 | 曰本毛片va看到爽不卡 | 国产美女自拍视频 | 三级成人网 | 午夜免费福利网站 | 亚洲黄色免费网址 | 国产91第一页 | 男女午夜免费视频 | 欧美成人精品不卡视频在线观看 | 成年黄色网址 | 亚洲91在线| 韩国在线精品福利视频在线观看 | 一级特黄特色的免费大片视频 | 国产成人教育视频在线观看 | 午夜三级成人三级 | a级毛片在线免费看 | 国产xvideos国产在线 | 美国免费一级片 | 中文字幕在线看 | 国产一级久久久久久毛片 | 成人免费黄网站 | 欧美一级特黄aa大片视频 | 米奇888在线播放欧美 | 久9精品视频 | 久久久久综合一本久道 | 特级毛片aaa免费版 特级毛片a级毛免费播放 | www.亚洲综合| 香港日本韩国三级网站 | 亚洲欧美日韩国产精品26u | 国产精品久久久久久久久免费 | 久久久网站亚洲第一 | 精品久久久久久影院免费 | jiz欧美高清 | 日产日韩亚洲欧美综合搜索 | 国产欧美自拍 | 91香蕉国产观看免费人人 | 久草a在线 | 一级片免费观看 |