1. 程式人生 > 其它 >vue動態路由配置

vue動態路由配置

序router.js傳遞路由{path:'/mine/:name',name:'mine',component:Mine} //通過:傳遞一個引數,name是誰都可以!路由必須完全匹配!但是可以使用?問號進行查詢!
1.https://router.vuejs.org/zh/guide/advanced/data-fetching.html動態路由資料獲取的參考文件網址。
2.http://localhost:8080/#/mine/%E5%BC%A0%E4%B8%89?sex=%E7%94%B7&height=80&dog=%E5%B0%8F%E5%B0%8F翻譯過來就是這個樣子的http://localhost:8080/#/mine/張三?sex=男&height=179&dog=小小。
$route是單個的路由器內容,$router是整體的路由。

//Mine.vue裡面的內容
<template>
<div id="mine">
<h2>個人中心</h2>
<h2>根據路由物件獲取的引數</h2>
//路由裡面對應的配置是“path:'/mine/:name'”
//網址格式為:/mine/張三?sex=男&height=179&dog=小小
<p>姓名:{{$route.params.name}}</p>
//下面放在問號?後面的是query裡面的內容
<p>性別:{{$route.query.sex}}</p>
<p>身高:{{$route.query.height}}</p>
<p>小狗:{{$route.query.dog}}</p>
</div>
</template>

<script>
export default {
name: "Mine",
created() {
console.log(this.$route);
console.log(this.$route.path);
console.log(this.$route.params);
console.log(this.$route.query);
// console.log(this.$router);
}
}
</script>

//route.js裡面的配置內容
{path:'/mine/:name',name:'mine',component:Mine}
//通過:傳遞一個引數,name是誰都可以!路由必須完全匹配!但是可以使用?問號進行查詢!

3.屬性獲取路由引數
參考文件:https://router.vuejs.org/zh/guide/essentials/dynamic-matching.html#%E5%93%8D%E5%BA%94%E8%B7%AF%E7%94%B1%E5%8F%82%E6%95%B0%E7%9A%84%E5%8F%98%E5%8C%96(這個文件可能不好用!)
1)props傳遞屬性,使用props來接收
route.js檔案的routes配置改為{path:'/mine',name:'mine',component:Mine,props:{name:'溫客行'}}。
Mine.vue增加修改為:export default {name: "Mine",props:['name'],created() { } },template中:<p>姓名:{{name}}</p>。
地址為:http://localhost:8080/#/mine可直接顯示姓名。這裡props:{name:'溫客行'}對應props:['name']。
2)props傳遞true。
router.js為:{path:'/mine/:name/:sex',name:'mine',component:Mine,props:true}為true,允許轉成對應屬性。
Mine.vue為<h2>根據路由物件獲取的引數</h2> <p>姓名:{{$route.params.name}}</p> <p>性別:{{$route.params.sex}}</p><h2>根據屬性物件獲取的引數</h2> <p>姓名:{{name}}</p> <p>性別:{{sex}}</p>。
props為:props:['name','sex']。
3)props傳遞函式。
router.js為:{path:'/mine/:name/:sex',name:'mine',component:Mine,props:func}為function會把當前路由物件作為一個引數傳遞給你。

//func函式如下
let func=({params,query})=>{
return {
name:params.name,
sex:params.sex,
height:query.height,
dog:query.dog,
}
};

Mine.vue的props為props:['name','sex','height','dog'],。
Mine.vue的template為:

<h2>根據路由物件獲取的引數</h2>
<p>姓名:{{$route.params.name}}</p>
<p>性別:{{$route.params.sex}}</p>
<p>身高:{{$route.query.height}}</p>
<p>小狗:{{$route.query.dog}}</p>

<h2>根據屬性物件獲取的引數</h2>
<p>姓名:{{name}}</p>
<p>性別:{{sex}}</p>
<p>身高:{{height}}</p>
<p>狗:{{dog}}</p>

地址為:http://localhost:8080/#/mine/張三?height=170&dog=旺財,你會發現使用func的形式,上面的根據路由物件和屬性物件獲取引數都可以獲得一樣的結果。