欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue路由傳遞參數(shù)與重定向的使用方法總結

 更新時間:2022年10月31日 09:38:07   作者:三掌柜666  
路由的本質就是一種對應關系,比如說我們在url地址中輸入我們要訪問的url地址之后,瀏覽器要去請求這個url地址對應的資源,下面這篇文章主要給大家介紹了關于Vue路由傳遞參數(shù)與重定向的使用方法,需要的朋友可以參考下

前言

前端開發(fā)過程中,作為前端開發(fā)者來說關于vue的使用并不陌生,vue相關常用的知識點也是非常重要的,不管是在實際開發(fā)中還是在求職面試中都很重要。在vue使用中,路由相關的知識點是非常重要的,而且在實際開發(fā)中也是必用知識點,那么本篇博文就來聊聊vue的路由參數(shù)傳遞和路由重定向相關的知識點。

概念

1、vue路由傳參

在使用vue開發(fā)中,路由傳參是指在嵌套路由的時候,父路由向子路由傳遞參數(shù),否則的話傳參操作無效的。路由傳參方式分為:params傳參、query傳參和url字符串拼接,其中,params傳參又分為在url中顯示參數(shù)和不顯示參數(shù)兩種方式。在實際使用過程中,需要知道路由跳轉并傳參的方式(聲明式導航和編程式導航)以及接收路由參數(shù)的方法等。

2、vue路由重定向

在使用vue開發(fā)中,路由重定向指的是用戶在訪問地址A 的時候,強制跳轉到地址D ,從而展示特定的組件頁面;通過路由規(guī)則的 redirect 屬性,指定一個新的路由地址,可以很方便地設置路由的重定向。

實際使用場景

在實際開發(fā)中,經常需要把某種模式匹配到的所有路由,全都映射到同一個組件。比如,現(xiàn)在有一個 Student組件,對于所有ID各不相同的學生用戶,都要使用這個組件來渲染,這時候就需要使用傳遞參數(shù)來實現(xiàn)了。

在實際場景中的另一個情況,在用戶首次訪問網站頁面("/根目錄"首頁)時,地址欄里邊沒有“#錨點”的信息,也就沒有對應的組件用于顯示,這樣的話用戶體驗不好,可以通過重定向實現(xiàn)一種效果,即當瀏覽器沒有任何 #錨點信息時,默認也給顯示一個組件,即當用戶在打開訪問地址A的時候,根據(jù)實際業(yè)務場景需要跳轉到地址C,此時就需要使用路由重定向來實現(xiàn)。

路由傳參

路由傳參方式分為:params傳參、query傳參和url字符串拼接。

1、使用步驟

  • 更改父組件綁定的子組件路由名稱以及傳遞的參數(shù);
  • 更改路由配置文件子組件路徑中添加的參數(shù),以及修改名稱;
  • 更改子組件<template>內容,主要是用于展示。

注意:不要在<template>中直接添加獲得的參數(shù),需要在外層加標簽包含起來。

2、params傳參

在params傳參使用中,只能使用name,不能用path,地址欄中不顯示參數(shù)名稱id,此方式可以理解為ajax中的post方法,但是有參數(shù)的值,但是當頁面刷新了之后是獲取不到參數(shù)值的,也就是刷新頁面之后傳遞的參數(shù)會丟失。而且通過params傳遞參數(shù),若想獲取 id 的參數(shù)值,可以通過this.$route.params.id這種方式獲取即可。

注意:獲取參數(shù)的時候是$route,跳轉和傳參的時候是$router。

具體的使用示例如下所示:

//傳參的設置

this.$router.push({
 name:"home", 
 //這里的params是一個對象,id是屬性名,item.id是值(是從當前組件或者Vue實例上直接取到的值)
 params:{id:item.id}
 })

//這個組件對應的路由配置

{  
//組件路徑
path: '/home',
//組件的別名
name: 'home', 
//組件名稱
component: Home,
}

//獲取路由傳遞參數(shù)的方法

this.$route.params.id

2-1、路由屬性配置參數(shù)

在使用路由屬性配置參數(shù)時候,通過路由屬性配置傳參可以用this.$route.params.id來獲取到傳遞過來id的值。地址欄中不顯示參數(shù)名稱id,此方式可以理解為ajax中的post方法,但是有參數(shù)的值,但是當頁面刷新了之后是獲取不到參數(shù)值的,也就是刷新頁面之后傳遞的參數(shù)會丟失。

注意:this.$router.push方法里面路徑帶的是值,路由配置項那里帶的是變量名(屬性名)來實現(xiàn)的對應參數(shù)傳遞。

具體的使用示例如下所示:

this.$router.push({
  name:"/home/${item.id}",
})

//這個組件對應的路由配置

{   
//組件路徑
path: '/home:id', 
 
//組件別名
name: 'home',   
 
//組件名
component: Home,
}

//獲取路由傳遞參數(shù)的方法

this.$route.params.id

3、query傳參

在query傳參使用中,name和path都能用。其中,在用path的時候,提供的path值必須是相對于根路徑的相對路徑,而不是相對于父路由的相對路徑,否則無法成功訪問路由。傳參的地址欄顯示參數(shù)格式為?id=1&index=1。

注意:query傳參,可以解決頁面刷新參數(shù)消失/丟失問題,此方式可以理解為ajax中的get方法,參數(shù)是直接在url后面添加,參數(shù)是顯示可見的,所以在解決頁面刷新參數(shù)消失/丟失問題就使用該方法來解決。

具體的使用示例如下所示:

this.$router.push({
name:"/home",    
 query:{id:item.id}
})

//這個組件對應的路由配置

{   
//組件路徑
path: '/home',   
 
//組件別名
name: 'home',   
 
//組件名
component: Home,
 }

//獲取路由傳遞參數(shù)的方法

this.$route.params.id

4、url字符串拼接

        url字符串拼接,相當于直接在跳轉的路由鏈接中拼接參數(shù),具體示例如下所示:

        url中直接帶url類型

http://localhost:8080/#/myDetail/123

        url中拼接請求參數(shù)

http://localhost:8080/#/myDetail?useId=123

5、接收路由參數(shù)的方法,分 ? 和 : 兩種接收方式

  首先,通過注入路由器,我們可以在任何組件內通過 this.$router訪問路由器,也可以通過this.$route訪問當前路由對象。這里再簡單說明下$router和$route的區(qū)別:

  • $router是指整個路由實例,可以操控整個路由,通過'$router.push'往其中添加任意的路由對象;
  • $route是指當前路由實例('$router')跳轉到的路由對象;
  • 路由實例可以包含多個路由對象.它們是父子包含關系,其中$router是路由實例,$route是路由對象。

1??、?形式的參數(shù)使用this.$route.query接收參數(shù),獲取到的結果是一個對象;

2??、:形式的參數(shù)使用this.$route.params接收參數(shù),獲取到的結果是一個對象。

6、路由傳參的示例

這里介紹一個路由傳參數(shù)的綜合示例,方便對比介紹,使用場景為點擊父組件的li元素跳轉到子組件中,并且?guī)в袇?shù),具體如下所示:

父組件

<li v-for="fruit in fruit" @click="getDes(fruit.id)"> 
 
methods:

方法一

getDes(id) {
//  直接調用$router.push實現(xiàn)攜帶參數(shù)跳轉
this.$router.push({
path: `/fruit/${id}`,
})

需要對應路由配置如下:

   {
     path: '/fruit/:id',
     name: ‘Fruit',
     component: Fruit
    }

很明顯,需要在path中添加/:id,來對應 $router.push 中path攜帶的參數(shù)。

在子組件中獲取傳遞的參數(shù)值的方式如下:

this.$route.params.id

方法二

父組件中:通過路由屬性中的name來確定匹配路由,使用params來傳遞參數(shù)。

       this.$router.push({
          name: 'Fruit',
          params: {
            id: id
          }
        })

對應路由配置: 可以添加:/id 也可以不添加,添加數(shù)據(jù)會在url后面顯示,不添加數(shù)據(jù)就不會顯示

  {
     path: '/fruit',
     name: 'Fruit',
     component: Fruit
   }

在子組件中獲取傳遞的參數(shù)值的方式如下:

this.$route.params.id

方法三

父組件中:使用path來匹配路由,然后使用query來傳遞參數(shù)。這種情況下query傳遞的參數(shù)會顯示在url后面?id=?

    this.$router.push({
          path: '/fruit',
          query: {
            id: id
          }
    })

對應路由配置:

   {
      path: '/fruit',
     name: 'Fruit',
     component: Fruit
    }

在子組件中獲取傳遞的參數(shù)值的方式如下:

this.$route.params.id

路由重定向

1、路由重定向語法

var router = new VueRouter({
      routes:[
    {path:'/', redirect:'/home'}, // {path:'/', redirect:'跳轉到的路由地址'}
     {path:'/home', component:Home}
      ]
})

上面語法指的是,在執(zhí)行/根目錄路由地址的時候,頁面就跳轉執(zhí)行/home路由地址 ,進而把對應的組件給展示出來。

注意:不僅僅“/” 可以被重定向,而且其他普通路由地址互相也可以重定向。其中,重定向會使得路由再次發(fā)生調用請求。

其實,路由重定向也是通過 routes 配置來完成,通過使用路由規(guī)則的redirect屬性,指定一個新的路由地址,可以很方便地設置路由的重定向。

2、實際示例

路由重定向的使用比較簡單,這里直接舉實際使用例子來分析,具體示例如下所示。

示例一:從路由/mine 重定向到 /

const routes = [{ path: '/mine', redirect: '/' }];

又如從路由/home 重定向到 /main

        {
          path: '/home',
          redirect:'/main'
         }

示例二:在沒有任何#錨點信息的時候,顯示首頁組件。

var router = new VueRouter({
    routes: [   
         // 其中,path 表示需要被重定向的原地址,redirect 表示將要被重定向到的新地址。當用戶在地址欄中輸入`/`,會自動的跳轉到`/home`,而`/home`對應的組件為Home
        {path:'/', redirect: '/home'},
       {path:'/home',component: Home},
     ]
   })

其他

再分享一種路由跳轉的方式:在需要跳轉的地方使用router-link進行界面的跳轉以及傳參數(shù),如下所示:

1. 使用to直接構建跳轉路由,不帶參數(shù)

<router-link to="/home">首頁</router-link>

2. 使用to構建跳轉路由(含傳參數(shù)),url拼接傳參

<router-link :to="'/home/'+111"></router-link>
 
<router-link :to="{‘/home?id=111'}"></router-link>

3.使用to構建跳轉路由(含傳參數(shù)),query方式對象形式傳參

<router-link :to="{path:‘/home',query:{id:111}}”></router-link>

4.使用to構建跳轉路由(含傳參數(shù)),params方式對象形式傳參

<router-link :to="{name:‘/home',params:{id:111}}”></router-link>

       具體實際示例如下所示,傳遞參數(shù)分為三步:

1??、首先要使用的路由下路徑給上要傳的參數(shù),路由還需要給上路由名字

          path:'/fruit/:id',
          component:Fruit,
          name:'Fruit'

2??、修改連接方式,直接在to前面綁定上v-bind:

          <el-menu-item index="1-1">
                <router-link :to="{name:'Fruit',params:{id:111}}"></router-link>
           </el-menu-item>

3??、具體組件中使用

<template>
<div> {{$route.params.id}}</div>
</template>
<script>
    export default {
        name: “fruit”
    }
</script>
 
<style scoped>
</style>

拓展

關于vue中vue-router的使用以及兩種模式的區(qū)別,可以參考這篇文章:vue-router的使用以及兩種模式的區(qū)別,該篇文章里面詳細的介紹了vue-router以及vue路由相關的所有內容,這里不再過多贅述。

最后

通過本文關于前端開發(fā)中Vue路由傳遞參數(shù)和重定向的使用總結的介紹,如果認真閱讀并且實踐示例,應該會很好的掌握這些知識點,雖然篇幅的內容不少,但是分開來看會覺得沒那么復雜,同時也整合了其他的匯總,是一篇值得閱讀的文章,尤其是對于由傳遞參數(shù)和重定向知識點在求職面試中甚為重要,而且在實際開發(fā)中也是必用知識點,所以說這個知識點是必備的,重要性就不在贅述。歡迎關注,一起交流,共同進步。

相關文章

  • Vue使用pinia管理數(shù)據(jù)pinia持久化存儲問題

    Vue使用pinia管理數(shù)據(jù)pinia持久化存儲問題

    這篇文章主要介紹了Vue使用pinia管理數(shù)據(jù)pinia持久化存儲問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 解決Vue axios post請求,后臺獲取不到數(shù)據(jù)的問題方法

    解決Vue axios post請求,后臺獲取不到數(shù)據(jù)的問題方法

    今天小編就為大家分享一篇解決Vue axios post請求,后臺獲取不到數(shù)據(jù)的問題方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 使用vue中的混入mixin優(yōu)化表單驗證插件問題

    使用vue中的混入mixin優(yōu)化表單驗證插件問題

    這篇文章主要介紹了使用vue中的混入mixin優(yōu)化表單驗證插件,本文是小編給大家總結的一些表單插件的問題,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • Vue列表循環(huán)從指定下標開始的多種解決方案

    Vue列表循環(huán)從指定下標開始的多種解決方案

    這篇文章主要介紹了Vue列表循環(huán)從指定下標開始的多種方案,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • vue文件代碼縮進以及格式化代碼方式[自定義]

    vue文件代碼縮進以及格式化代碼方式[自定義]

    這篇文章主要介紹了vue文件代碼縮進以及格式化代碼方式[自定義],具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue如何把組件方法暴露到window對象中

    vue如何把組件方法暴露到window對象中

    這篇文章主要介紹了vue如何把組件方法暴露到window對象中,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue3+Vite項目使用less的實現(xiàn)步驟

    Vue3+Vite項目使用less的實現(xiàn)步驟

    最近學習在vite項目中配置less,本文主要介紹了Vue3+Vite項目使用less的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2024-02-02
  • 詳解vue中v-bind:style效果的自定義指令

    詳解vue中v-bind:style效果的自定義指令

    這篇文章主要介紹了vue中v-bind:style效果的自定義指令,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • vite前端構建Turborepo高性能monorepo方案

    vite前端構建Turborepo高性能monorepo方案

    這篇文章主要為大家介紹了vite前端構建Turborepo高性能monorepo方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • vue 項目全屏插件screenfull使用案例

    vue 項目全屏插件screenfull使用案例

    這篇文章主要介紹了vue 項目全屏插件screenfull使用案例,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12

最新評論