一般在组件内使用路由参数,大多数人会这样做:

    1. export default {
    2. methods: {
    3. getParamsId() {
    4. return this.$route.params.id
    5. },
    6. },
    7. }

    在组件中使用$route会使之与其对应的路由形成高度耦合,从而使组件只能在某些特定的 URL 上使用,限制了其灵活性。
    正确的的做法使通过’props’解耦

    1. const router = new VueRouter({
    2. routes: [
    3. {
    4. path: '/user/:id',
    5. compoment: User,
    6. props: true,
    7. },
    8. ],
    9. })

    将路由的’props’属性设置为’true’后,组件内可通过’props’接收到’pramas’参数

    1. export default {
    2. props: ['id'],
    3. methods: {
    4. getParamsId() {
    5. return this.id
    6. },
    7. },
    8. }

    另外还可以通过函数模式来返回’props’

    1. const router = new VueRouter({
    2. routes: [
    3. path: '/user/:id',
    4. component: User,
    5. props: (route) => {
    6. return {
    7. id: route.query.id
    8. }
    9. }
    10. ]
    11. })

    文档:https://router.vuejs.org/zh/guide/essentials/passing-props.html