缺少命名路径的参数:预定义的"x"

Gia*_*omo 5 vue.js vue-router vuex

我是否这样做

Vue.router.push({ path: '/beats/catalog/1' }) 
Run Code Online (Sandbox Code Playgroud)

或这个

Vue.router.push({ name: 'BeatsCatalog', params: { page: 1 } })
Run Code Online (Sandbox Code Playgroud)

我得到了相同的结果: [vue-router] missing param for named route "BeatsCatalog": Expected "page" to be defined.

路由器:

{
        path: '/beats',
        components: {
            navbar: Navbar,
            default: { template: `<router-view/>` }
        },
        children: [{
                name: 'BeatsCatalog',
                path: 'catalog/:page',
                components: {
                    default: () => import('@/views/BeatsCatalog')
                },
                props: { default: true }
            },
            {
                path: 'upload',
                name: 'BeatsUpload',
                components: {
                    default: () => import('@/views/BeatsUpload')
                }
            },
        ],
        meta: { requiresAuth: true }
    }
Run Code Online (Sandbox Code Playgroud)

是什么导致了这个问题?我认为我的设置没有任何问题,我正在做文档中的所有操作.谢谢.

lok*_*oki 7

@Giacoma,在组件BeatsCatalog的数据属性中,初始加载时页面未定义.因此你得到了错误.

所以要解决这个问题,请将你的路由器链接包装在v-if中.

这里有对更好解释的相同错误的引用:

https://github.com/vuejs/vue-router/issues/986