[vue-router4快速入門] 2.傳遞參數(shù)的兩種方式

在實(shí)際開發(fā)中跳轉(zhuǎn)頁面時(shí)旭愧,我們經(jīng)常要把上一頁的數(shù)據(jù)傳遞到下一個(gè)頁面堕绩,比如我們有一個(gè)用戶列表部蛇,在列表頁點(diǎn)擊了一個(gè)用戶,進(jìn)到用戶詳情頁狈涮,那么用戶詳情頁就需要知道用戶在列表頁點(diǎn)擊的是哪個(gè)用戶狐胎,然后再展示相應(yīng)的詳情。這時(shí)候就需要我們用路由把用戶的id傳到詳情頁歌馍,在vue-router有兩種方式可以傳遞參數(shù)

1)動(dòng)態(tài)路由

動(dòng)態(tài)路由的形式是這樣的

/userDetail/:id

我們發(fā)現(xiàn)路由里有一個(gè)冒號握巢,這就表示它是一個(gè)動(dòng)態(tài)路由,我們還是來寫一個(gè)例子松却,

1)在views下創(chuàng)建一個(gè)新的頁面暴浦,userDetail.vue
<template>
  <div>用戶詳情頁獲取到了id:{{ id }}</div>
</template>

<script>
export default {
  data() {
    return {
      id: '',
    }
  },
  mounted() {},
}
</script>

<style></style>

我們把頁面上基本內(nèi)容寫上,現(xiàn)在id是空晓锻,因?yàn)槲覀冞€沒有獲取

2)在router.js中導(dǎo)入新的頁面歌焦,并且為它對應(yīng)上路由
import { createRouter, createWebHistory } from 'vue-router' 
import index from './views/index' 
import list from './views/list' 
import userDetail from './views/userDetail'  // 新增的頁面

const routes = [
  {
    path: '/', 
    component: index,
  },
  {
    path: '/list',
    component: list,
  },
  {
    path: '/userDetail/:id', // 新增的路由,前一部分/userDetial是固定路由砚哆,后面:id說明是動(dòng)態(tài)路由
    component: userDetail,
  },
]

const router = createRouter({
  history: createWebHistory(),
  routes, 
})

export default router

在列表頁我們寫點(diǎn)模擬數(shù)據(jù)独撇,渲染出來一個(gè)用戶列表,在列表中我們增加router-link躁锁,實(shí)現(xiàn)跳轉(zhuǎn)頁面的效果

<template>
  <div>這里是列表頁</div>
  <router-link to="/">點(diǎn)擊跳轉(zhuǎn)到首頁</router-link>
  <ul>
    <li v-for="item in userList" :key="item.id">
      <router-link :to="'/userDetail/' + item.id"
        >點(diǎn)擊查看{{ item.name }}</router-link
      >
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      userList: [
        {
          name: '亞歷山大',
          id: '01',
        },
        {
          name: '凱撒',
          id: '02',
        },
        {
          name: '屋大維',
          id: '03',
        },
      ],
    }
  },
}
</script>

<style></style>

我們可以發(fā)現(xiàn)這次我們的router-link里面to屬性是有冒號的纷铣,說明它現(xiàn)在動(dòng)態(tài)綁定的,前一部分是固定的字符串'/userDetail/'战转,后面加上了當(dāng)前一項(xiàng)的id搜立,渲染結(jié)果是這樣的



點(diǎn)擊鏈接我們就可以進(jìn)入到用戶詳情頁了

這時(shí)候我們需要在用戶詳情頁獲取傳過來的參數(shù)了

this.$route.params.id

這樣就可以獲取到了
需要注意兩點(diǎn)
1)這次用的是this.$route,表示當(dāng)前的路由槐秧,跟之前用的this.$router不一樣啄踊,后者表示我們在router中創(chuàng)建的那個(gè)全局管理路由的對象
2)this.$route.params是一個(gè)對象,通過動(dòng)態(tài)路由傳過來的參數(shù)都會(huì)放在這個(gè)對象里刁标,我們?nèi)〉氖莍d這個(gè)參數(shù)颠通,這里的id和路由配置時(shí)候'/userDetail/:id'這個(gè)id是相對應(yīng)的
我們在詳情頁也定義了一個(gè)id數(shù)據(jù),以便我們使用命雀,放在模板里

<template>
  <div>用戶詳情頁獲取到了id:{{ id }}</div>
</template>

<script>
export default {
  data() {
    return {
      id: '',
    }
  },
  mounted() {
    this.id = this.$route.params.id
  },
}
</script>

<style></style>

我們可以看到詳情頁就可以顯示id了


這是通過動(dòng)態(tài)路由傳參蒜哀,初學(xué)者可能理解起來比較費(fèi)勁斩箫,要自己動(dòng)手寫一寫吏砂,下面說一種簡單的

2.使用queryString傳參

例如

http://www.test.com/?a=1&b=2

在url中問號后面的a=1&b=2撵儿,就是queryString,這里表示參數(shù)a的值是1狐血,參數(shù)b的值是2

放在我們的例子中淀歇,我們現(xiàn)在把用戶的名字也傳到用戶詳情頁,使用queryString的方式來傳
像這樣

http://localhost:8080/userDetail/03?name=屋大維

改動(dòng)一下我們渲染列表的代碼匈织,

    <li v-for="item in userList" :key="item.id">
      <router-link :to="'/userDetail/' + item.id + '?name=' + item.name"  // 拼接鏈接的時(shí)候增加了name
        >點(diǎn)擊查看{{ item.name }}</router-link
      >
    </li>

渲染結(jié)果是:



下一步就是獲取這個(gè)參數(shù)了浪默,這么傳參有個(gè)好處,就是不用更改router.js里面的配置
那么該在用戶詳情頁直接獲取了

this.$route.query.name

這次試用query對象缀匕,和上次params不一樣纳决,
我們的參數(shù)名字是name



完整代碼是

<template>
  <div>用戶詳情頁獲取到了id:{{ id }},他的名字是:{{ name }}</div>
</template>

<script>
export default {
  data() {
    return {
      id: '',
      name: '',
    }
  },
  mounted() {
    this.id = this.$route.params.id
    this.name = this.$route.query.name
  },
}
</script>

<style></style>

這節(jié)課我們向頁面?zhèn)鬟f參數(shù)的兩種方式都學(xué)到了,在實(shí)際開發(fā)中都很常用乡小,大家一定要掌握阔加。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市满钟,隨后出現(xiàn)的幾起案子胜榔,更是在濱河造成了極大的恐慌,老刑警劉巖湃番,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夭织,死亡現(xiàn)場離奇詭異,居然都是意外死亡吠撮,警方通過查閱死者的電腦和手機(jī)尊惰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纬向,“玉大人择浊,你說我怎么就攤上這事∮馓酰” “怎么了琢岩?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長师脂。 經(jīng)常有香客問我担孔,道長,這世上最難降的妖魔是什么吃警? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任糕篇,我火速辦了婚禮,結(jié)果婚禮上酌心,老公的妹妹穿的比我還像新娘拌消。我一直安慰自己,他們只是感情好安券,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布墩崩。 她就那樣靜靜地躺著氓英,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鹦筹。 梳的紋絲不亂的頭發(fā)上铝阐,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機(jī)與錄音铐拐,去河邊找鬼徘键。 笑死,一個(gè)胖子當(dāng)著我的面吹牛遍蟋,可吹牛的內(nèi)容都是我干的吹害。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼虚青,長吁一口氣:“原來是場噩夢啊……” “哼赠制!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挟憔,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钟些,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后绊谭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體政恍,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年达传,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了篙耗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宪赶,死狀恐怖宗弯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搂妻,我是刑警寧澤蒙保,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站欲主,受9級特大地震影響邓厕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扁瓢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一详恼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧引几,春花似錦昧互、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渐逃。三九已至民褂,卻和暖如春茄菊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赊堪。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工面殖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哭廉,地道東北人脊僚。 一個(gè)月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓遵绰,卻偏偏與公主長得像辽幌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子椿访,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容