一般在组件内使用路由参数,大多数人会这样做:
export default {
methods: {
getParamsId() {
return this.$route.params.id
},
},
}
在组件中使用$route
会使之与其对应的路由形成高度耦合,从而使组件只能在某些特定的 URL 上使用,限制了其灵活性。
正确的的做法使通过’props’解耦
const router = new VueRouter({
routes: [
{
path: '/user/:id',
compoment: User,
props: true,
},
],
})
将路由的’props’属性设置为’true’后,组件内可通过’props’接收到’pramas’参数
export default {
props: ['id'],
methods: {
getParamsId() {
return this.id
},
},
}
另外还可以通过函数模式来返回’props’
const router = new VueRouter({
routes: [
path: '/user/:id',
component: User,
props: (route) => {
return {
id: route.query.id
}
}
]
})
文档:https://router.vuejs.org/zh/guide/essentials/passing-props.html