首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Nuxt.js中创建嵌套路由中的可选参数?

如何在Nuxt.js中创建嵌套路由中的可选参数?
EN

Stack Overflow用户
提问于 2019-03-02 20:00:47
回答 1查看 2K关注 0票数 5

在nuxt.js应用程序中,我有如下嵌套的路由:route-1/route-2/route-3

我想在route-1后面添加一个可选的参数,以呈现相同的旧路由,但带有额外的信息(项目id或类似的东西),这意味着它将映射到2种路由格式

route-1/:param/route-2/route-3route-1/route-2/route-3

不复制我的文件夹结构

如果我添加一个具有param名称的文件,它将是必需的param,我将不得不复制文件夹结构而不使用此param来处理这两种情况

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-11 02:02:56

在我的案例中用这个解决了。我有这个页面树:

代码语言:javascript
复制
pages/
--| search/
----| index.vue
--| index.vue

我需要一个可选的‘类别’参数在搜索页面。我将像这样扩展路由:

代码语言:javascript
复制
// nuxt.config.js

export default {
  router: {
    middleware: [...],
    extendRoutes (routes, resolve) {
      routes.push({
        name: 'search-category',
        path: '/search/:category',
        component: resolve(__dirname, 'pages/search/index.vue'),
        chunkName: 'pages/search/_category/index'
      })
    }
  }
}

如果我导航到/search/search/my-category,这两种情况下都会呈现相同的页面,而在第二种情况下,$route.params.category中的值为my-category :)

在您的例子中,可能是这样的:

代码语言:javascript
复制
// nuxt.config.js

export default {
  router: {
    middleware: [...],
    extendRoutes (routes, resolve) {
      routes.push({
        name: 'my-new-route',
        path: '/route-1/:param/route-2/route-3',
        component: resolve(__dirname, 'pages/same-route/index.vue'),
        chunkName: 'pages/same-route/_param/index'
      })
    }
  }
}

顺便说一句:如果您使用nuxtI18n插件,则chunkName是必需的,在此插件中,动态路由的配置为:

代码语言:javascript
复制
// nuxt.config.js

export default {
  i18n: {
    pages: {
      'search/index': { // <-- route in pages tree
        es: '/buscar',
        en: '/search'
      },
      'search/_category/index': { // <-- dynamic route configured
        es: '/buscar/:category',
        en: '/search/:category'
      }
    }
  }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54958289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档