Vue路由是一種前端頁(yè)面路由管理方式。它可以讓開發(fā)者方便地將各個(gè)頁(yè)面進(jìn)行劃分管理,并進(jìn)行跳轉(zhuǎn)控制。Vue路由的可選參數(shù)功能可以讓開發(fā)者在實(shí)現(xiàn)路由跳轉(zhuǎn)的時(shí)候,傳遞一些參數(shù),對(duì)頁(yè)面進(jìn)行定制化展示,提高用戶體驗(yàn)。
在Vue路由中,可選參數(shù)是通過(guò)在路由路徑中加上問(wèn)號(hào)的方式實(shí)現(xiàn)。例如:
const routes = [ { path: '/user/:id', component: User, props: true }, { path: '/user/:id/:name?', component: User, props: true } ]
在上面的代碼中,第一個(gè)路由對(duì)應(yīng)的是/user/:id路徑,只有一個(gè)必選參數(shù)id。第二個(gè)路由對(duì)應(yīng)的是/user/:id/:name?,其中:id是必選參數(shù),:name?是可選參數(shù),問(wèn)號(hào)表示該參數(shù)可以有也可以沒有。
在使用可選參數(shù)的時(shí)候,可以在組件的props選項(xiàng)中進(jìn)行配置。例如:
const User = { props: ['id', 'name'], template: '<div>{{ id }} {{ name }}</div>' }
在上面的代碼中,props選項(xiàng)中定義了兩個(gè)參數(shù)id和name,這兩個(gè)參數(shù)對(duì)應(yīng)的是路由路徑中的:id和:name。在路由跳轉(zhuǎn)的時(shí)候,可以通過(guò)$router.push方法在路徑末尾加上可選參數(shù)進(jìn)行傳遞,例如:
this.$router.push({ path: '/user/123' }) //跳轉(zhuǎn)到/user/123頁(yè)面,name參數(shù)不傳遞 this.$router.push({ path: '/user/123/zh' }) //跳轉(zhuǎn)到/user/123/zh頁(yè)面,傳遞了name參數(shù)
在組件中,可以直接使用props中定義的參數(shù)進(jìn)行展示,例如:
<template> <div> <!-- id參數(shù)是必選參數(shù),一定存在 --> {{ id }} <!-- name參數(shù)是可選參數(shù),可能不存在 --> <span v-if="name">{{ name }}</span> </div> </template> <script> export default { props: ['id', 'name'] } </script>
在上面的代碼中,L3和L7中使用了props中定義的參數(shù)。在L7中通過(guò)v-if判斷name是否存在,如果存在就展示出來(lái),否則就不展示。
總之,Vue路由的可選參數(shù)功能可以讓開發(fā)者在路由跳轉(zhuǎn)過(guò)程中對(duì)頁(yè)面進(jìn)行更靈活的控制,達(dá)到更好的用戶交互體驗(yàn)。