【问题标题】:How to create an optional param in nested routes in Nuxt.js?如何在 Nuxt.js 的嵌套路由中创建可选参数?
【发布时间】:2019-03-02 12:00:47
【问题描述】:

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

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

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

没有重复我的文件夹结构

如果我添加一个带有参数名称的文件,它将是一个必需的参数,我将不得不复制没有此参数的文件夹结构来处理 2 个场景

【问题讨论】:

  • 你解决了吗?
  • 在我的情况下,我更改了我的功能的实现以避免这种情况,但我发现的唯一解决方案是在 js 文件中扩展我的路由而不依赖于 Nuxt.js定义我的路线的方法。

标签: vue.js vuejs2 vue-router nuxt.js


【解决方案1】:

在我的情况下解决了这个问题。我有这个页面树:

pages/
--| search/
----| index.vue
--| index.vue

我需要在搜索页面中添加一个可选的“类别”参数。我将像这样扩展路线:

// 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 :)

在你的情况下,可能是这样的:

// 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 是必需的,之后,在这个插件中,动态路由的配置是(在我的情况下):

// 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'
      }
    }
  }
}

【讨论】:

  • 是的,我用同样的想法解决了这种情况,但我忘了写解决方案。干得好@lmfresneda
猜你喜欢
  • 2019-12-25
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
  • 2020-04-24
相关资源
最近更新 更多