亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2021年05月11日 14:45:23   作者:sugar_coffee  
這篇文章主要介紹了vue中$router和$route的區(qū)別,對(duì)vue感興趣的同學(xué),一定要看下

我們?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í)例。通過 vue 根實(shí)例中注入 router 實(shí)例,然后再注入到每個(gè)子組件,從而讓整個(gè)應(yīng)用都有路由功能。其中包含了很多屬性和對(duì)象(比如 history 對(duì)象),任何頁面也都可以調(diào)用其 push(), replace(), go() 等方法。

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

聲明式:

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

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

編程式:

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

然后我再來嘮嘮 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í)例中注入路由,這樣就可以在其他任何組件中訪問路由了 --- main.js

import router from './router'

new Vue({
    router,
    render: h => h(App)
}).$mount('#app')

大體步驟就以上這些

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

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

其中$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 展開結(jié)果為:

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

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

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

push()方法會(huì)向 history 中添加一個(gè)記錄,當(dāng)點(diǎn)擊瀏覽器的返回按鈕時(shí)可以退回到前一個(gè)頁面,當(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)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue.js圖片轉(zhuǎn)Base64上傳圖片并預(yù)覽的實(shí)現(xiàn)方法

    vue.js圖片轉(zhuǎn)Base64上傳圖片并預(yù)覽的實(shí)現(xiàn)方法

    這篇文章主要介紹了vue.js圖片轉(zhuǎn)Base64上傳圖片并預(yù)覽的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • Vue?3需要避免的錯(cuò)誤

    Vue?3需要避免的錯(cuò)誤

    Vue3已經(jīng)穩(wěn)定了相當(dāng)長一段時(shí)間了。許多代碼庫都在生產(chǎn)環(huán)境中使用它,其他人最終都將不得不遷移到Vue3。我現(xiàn)在有機(jī)會(huì)使用它并記錄了我的錯(cuò)誤,下面這些錯(cuò)誤你可能想要避免
    2023-03-03
  • VUE element-ui 寫個(gè)復(fù)用Table組件的示例代碼

    VUE element-ui 寫個(gè)復(fù)用Table組件的示例代碼

    本篇文章主要介紹了VUE element-ui 寫個(gè)復(fù)用Table組件的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • vue2使用el-date-picker實(shí)現(xiàn)動(dòng)態(tài)日期范圍demo

    vue2使用el-date-picker實(shí)現(xiàn)動(dòng)態(tài)日期范圍demo

    這篇文章主要為大家介紹了vue2使用el-date-picker實(shí)現(xiàn)動(dòng)態(tài)日期范圍示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • vue指令之表單控件綁定v-model v-model與v-bind結(jié)合使用

    vue指令之表單控件綁定v-model v-model與v-bind結(jié)合使用

    這篇文章主要介紹了vue指令之表單控件綁定v-model v-model與v-bind結(jié)合使用,需要的朋友可以參考下
    2019-04-04
  • 如何啟動(dòng)node.js文件的3個(gè)方法

    如何啟動(dòng)node.js文件的3個(gè)方法

    這篇文章主要給大家介紹了關(guān)于如何啟動(dòng)node.js文件的3個(gè)方法,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Vue中tinymce富文本功能配置詳解

    Vue中tinymce富文本功能配置詳解

    TinyMCE是一款易用、且功能強(qiáng)大的所見即所得的富文本編輯器,跟其他富文本編輯器相比,有著豐富的插件,支持多種語言,能夠滿足日常的業(yè)務(wù)需求并且免費(fèi),本文小編給大家詳細(xì)介紹了Vue中tinymce富文本功能配置,需要的朋友可以參考下
    2023-11-11
  • vue axios攔截器常用之重復(fù)請(qǐng)求取消

    vue axios攔截器常用之重復(fù)請(qǐng)求取消

    我們大家在開發(fā)中,經(jīng)常會(huì)遇到接口重復(fù)請(qǐng)求導(dǎo)致的各種問題,下面這篇文章主要給大家介紹了關(guān)于axios攔截器之重復(fù)請(qǐng)求取消的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • vue中的數(shù)據(jù)格式化filters、formatter方式

    vue中的數(shù)據(jù)格式化filters、formatter方式

    這篇文章主要介紹了vue中的數(shù)據(jù)格式化filters、formatter方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 解決axios發(fā)送post請(qǐng)求上傳文件到后端的問題(multipart/form-data)

    解決axios發(fā)送post請(qǐng)求上傳文件到后端的問題(multipart/form-data)

    這篇文章主要介紹了如何使用axios發(fā)送post請(qǐng)求上傳文件到后端(multipart/form-data),本文給大家?guī)砹藛栴}原因及解決方案,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05

最新評(píng)論