iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
Modern Web

30 天我與 Vue 的那些二三事系列 第 23

Day 23 - Vue Router參數路由

  • 分享至 

  • xImage
  •  

昨天我們提到了如何透過Vue-Router切換頁面,今天我們來談談如何傳遞參數到路由上。

new Vue({
    router: new VueRouter({
        routes: [
            {path: "", component: HelloWorld},
            {path: "/About", component: About},
            {path: "/Detail/:id", component: Detail},
        ]
    }),

假設今天有三個頁面要做切換,首頁渲染HelloWorld.vue、/About渲染About.vue,Detail則必須要傳入名為id的參數。

<!-- Detail.vue -->
<template>
	<div>
		<div>Detail</div>
		<div>id: {{id}}</div>
	</div>
</template>

<script>
    export default {
        name: "Detail",
        computed: {
            id() {
                return this.$route.params.id;
            }
        }
    }
</script>

我們在Route上,讓path上加上 :id,並定義參數id是一個變數(名稱可以自訂),我們可以使用 this.$route.params.id 來取得 id 的值,另外,如果想取得的值來自QueryString,可以使用 this.$route.query.id。

不過這時候如果我們沒從前端傳入 id ,會發現並沒有載入 Detail.vue 這個component的,因為Route上指定的 id 是一個必須的參數,可以在參數後面加上問號,讓這個參數變成optional,這樣即時沒有 id,也可以找到Detail組件並載入顯示。

{path: "/Detail/:id?", component: Detail}

Hi, I am Grant.

個人部落格 - https://grantliblog.wordpress.com/
個人網站 - https://grantli-website.netlify.app/#/mainpage
我的寫作專題 - https://vocus.cc/user/5af2e9b5fd89780001822db4#


上一篇
Day 22 - Vue Router基本概念(2)
下一篇
Day 24 - Vue-Router巢狀路由
系列文
30 天我與 Vue 的那些二三事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言