前言
記錄下vue3.0中路由參數的獲取
具體實現
route.js
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/detail/:id',
name: 'Detail',
component: Detail
}
]
App.vue
<template>
<div>
<router-view @route-change="onRouteChange"/>
</div>
</template>
<script>
import router from '@/router'
export default {
name: 'App',
methods: {
/**
* 自定義事件監聽
* @param event
*/
onRouteChange (event) {
router.push('/detail/3')
}
}
}
</script>
home.vue
<template>
<div>首頁</div>
<img @click="toDetail" src="@/assets/logo.png" style="width: 100%;"/>
</template>
<script>
export default {
name: 'home',
// 定義拋出的事件名稱
emits: ['route-change'],
methods: {
toDetail (event) {
// 自定義事件拋出
this.$emit('route-change', event)
}
}
}
</script>
detail.vue
<template>
<div>詳情頁{{id}}</div>
</template>
<script>
import router from '@/router'
export default {
name: 'detail',
data () {
return {
id: ''
}
},
created () {
console.log(router.currentRoute.value.params)
this.id = router.currentRoute.value.params.id
}
}
</script>
