轉自: https://blog.csdn.net/wy01272454/article/details/77869442?locationNum=7&fps=1
傳參方式
- 通過router-link進行跳轉
- 通過程式設計導航進行路由跳轉
- 動态路由
一、router-link方式
<router-link
:to="{
path: 'yourPath',
params: {
name: 'name',
dataObj: data
},
query: {
name: 'name',
dataObj: data
}
}">
</router-link>
1. path -> 是要跳轉的路由路徑,也可以是路由檔案裡面配置的 name 值,兩者都可以進行路由導航
2. params -> 是要傳送的參數,參數可以直接key:value形式傳遞
3. query -> 是通過 url 來傳遞參數的同樣是key:value形式傳遞
// 2,3兩點皆可傳遞
二、程式設計方式傳參
// 元件A
// 元件 a
<template>
<button @click="sendParams">傳遞</button>
</template>
<script>
export default {
name: '',
data () {
return {
msg: 'test message'
}
},
methods: {
sendParams () {
this.$router.push({
path: 'yourPath',
name: '要跳轉的路徑的 name,在 router 檔案夾下的 index.js 檔案内找',
params: {
name: 'name',
dataObj: this.msg
}
/*query: {
name: 'name',
dataObj: this.msg
}*/
})
}
},
computed: {
},
mounted () {
}
}
</script>
<style scoped></style>
// 元件B
<template>
<h3>msg</h3>
</template>
<script>
export default {
name: '',
data () {
return {
msg: ''
}
},
methods: {
getParams () {
// 取到路由帶過來的參數
let routerParams = this.$route.params.dataobj
// 将資料放在目前元件的資料内
this.msg = routerParams
}
},
watch: {
// 監測路由變化,隻要變化了就調用擷取路由參數方法将資料存儲本元件即可
'$route': 'getParams'
}
}
</script>
<style scoped></style>
三、動态路由方式
設定動态路由: path: '/user/:id'
擷取參數: $route.params.id
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
<div id="app">
<p>
<router-link to="/user/foo">/user/foo</router-link><br>
<router-link to="/user/bar">/user/bar</router-link>
</p>
<router-view></router-view>
</div>
<script>
const User = {
template: `<div>User {{ $route.params.id }}</div>`
}
const router = new VueRouter({
routes: [{
path: '/user/:id',
component: User
}]
})
const app = new Vue({
router
}).$mount('#app')
</script>