命名路由缺少参数:应定义“x”

Posted

技术标签:

【中文标题】命名路由缺少参数:应定义“x”【英文标题】:Missing param for named route: Expected "x" to be defined 【发布时间】:2018-06-02 12:17:52 【问题描述】:

我是否这样做

Vue.router.push( path: '/beats/catalog/1' ) 

或者这个

Vue.router.push( name: 'BeatsCatalog', params:  page: 1  )

我得到相同的结果: [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 
    

导致问题的原因是什么?我的设置没有任何问题,我正在做文档中的所有事情。 谢谢。

【问题讨论】:

【参考方案1】:

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

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

对相同错误的更好解释的参考在这里:

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

【讨论】:

我通常每次都会得到这个答案:)

以上是关于命名路由缺少参数:应定义“x”的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Razor Pages 路由参数命名页面

为 Laravel 8 路由定义命名空间 [重复]

将参数传递给路由时未定义路由

002 flutter的路由管理--命名路由

路由过滤器中 closure() 缺少参数 3

Rails 资源路由缺少参数但匹配文档