如何在Vue 3(Vue路由器)中设置具有多个动态参数的动态路由

卡尔文·内尼斯(Calvin Nunes)

使用Vue 3和Vue路由器,如何创建具有多个动态参数的动态路由?
这些参数需要能够以任何顺序传递。

在我们的网络应用中,我们有500多个视图,因此我们在运行时解析了路由,并.vue在必要时加载了组件(),因为在路由文件中设置这500个视图中的每个视图都是很疯狂的。

假设我们有一个称为“产品”的视图,我们的客户有多个过滤器选项,并且这些过滤器在过滤某些内容时在URL中传递。他们可以传递0个参数或10个以上的参数。这取决于他们要过滤的内容。

想象一下,用户可以传递以下URL:
www.webapp.com/products
www.webapp.com/products/color/red
www.webapp.com/products/brand/myBrand/color/green
www.webapp.com/products/size/36/brand/myBrand
以及其他多种动态可能性。

我尝试使用通配符添加路线*,但根本行不通。
我试过的
{path: '/products/:(.*)', ...}
{path: '/products/:params(.*)', ...}
{path: '/products/:(.*)*', ...}
{path: '/products/:params(.*)*', ...}
{path: '/products/*', ...}
{path: '/products-*', ...}

这些尝试均无济于事。有些人抛出了错误,有些人只是从网址中删除了参数,仅保留了/products在所有尝试中,this.$route.params都是空的。

如何使用Vue 3和Vue Router以任意顺序创建具有多个动态参数的动态路由?

OBS:对于“友好的URL”的缘故,我们不能因为他们是丑陋使用查询
(如:products?color=red&size=10&brand=my%20brand

东尼19

您的尝试可能失败了,因为它们将命名参数语法:后跟参数名)与未命名参数语法(.*)混合在一起

对于零个或多个命名参数(例如named myParams),请使用以下模式:

:myParams*

我建议使用一个props函数来解析要作为道具传递给组件的路由参数,这可以使params格式位于一个中央位置,并使组件不必检查路由:

const routes = [
  {
    path: '/products/:myParams*',
    component: () => import('@/components/Products.vue'),

    // parse key-value pairs into an object
    props: route => {
      const params = route.params.myParams
      const props = {}
      for (let i = 0; i < params.length; i += 2) {
        const value = i + 1 < params.length ? params[i + 1] : null
        props[params[i]] = value
      }
      return props
    }
  }
]

演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

vue路由器如何使用动态参数需要匹配?

来自分类Dev

动态路由的Vue路由器问题

来自分类Dev

在 Vue 2 路由器中设置嵌套的可选参数

来自分类Dev

将路由动态导入Vue路由器

来自分类Dev

Vue路由器:如何为动态路由动态生成页面标题?

来自分类Dev

Vue路由器:如何为动态路由动态生成页面标题?

来自分类Dev

如何在 vue 路由器中传递道具

来自分类Dev

在vue路由器中获取所有路由

来自分类Dev

如何动态设置ui路由器状态的data属性?

来自分类Dev

Vue路由器-并非所有参数都已通过

来自分类Dev

带有数据绑定的 Vue 路由器参数

来自分类Dev

如何正确使用vue3 / vue路由器?

来自分类Dev

Vue路由器router-link-exact-active用于动态路由

来自分类Dev

具有Typescript的Vue3路由器:缺少RouteConfig

来自分类Dev

如何在哈希模式下使用Vue路由器查询参数?

来自分类Dev

Vue 路由器如何在根页面上提供查询参数

来自分类Dev

如何在Vue.js 3中使用vue路由器将404路由重定向到Home

来自分类Dev

如何为具有动态参数的路由禁用 csrf 保护?

来自分类Dev

如何在Vue Nuxt应用程序中正确设置动态sitemap.xml路由?

来自分类Dev

在Vue3和Vue路由器中获取当前路由的最佳方法?

来自分类Dev

如何在角度UI路由器中基于$ stateParams动态创建嵌套状态

来自分类Dev

如何在角度UI路由器中基于$ stateParams动态创建嵌套状态

来自分类Dev

如果该路由器的IP是动态的,如何远程连接到3G路由器?

来自分类Dev

如何在Backbone.Marionette中设置多个路由器和控制器

来自分类Dev

如何在Backbone.Marionette中设置多个路由器和控制器

来自分类Dev

Vue:限制具有某些角色的用户可以访问路由器中的某些页面 vue-element-admin

来自分类Dev

动态 vue 路由器 - beforeEnter - 使用 next() 时无限循环

来自分类Dev

子路由未显示在Vue路由器中

来自分类Dev

如何在JSX中访问路由器参数?

Related 相关文章

  1. 1

    vue路由器如何使用动态参数需要匹配?

  2. 2

    动态路由的Vue路由器问题

  3. 3

    在 Vue 2 路由器中设置嵌套的可选参数

  4. 4

    将路由动态导入Vue路由器

  5. 5

    Vue路由器:如何为动态路由动态生成页面标题?

  6. 6

    Vue路由器:如何为动态路由动态生成页面标题?

  7. 7

    如何在 vue 路由器中传递道具

  8. 8

    在vue路由器中获取所有路由

  9. 9

    如何动态设置ui路由器状态的data属性?

  10. 10

    Vue路由器-并非所有参数都已通过

  11. 11

    带有数据绑定的 Vue 路由器参数

  12. 12

    如何正确使用vue3 / vue路由器?

  13. 13

    Vue路由器router-link-exact-active用于动态路由

  14. 14

    具有Typescript的Vue3路由器:缺少RouteConfig

  15. 15

    如何在哈希模式下使用Vue路由器查询参数?

  16. 16

    Vue 路由器如何在根页面上提供查询参数

  17. 17

    如何在Vue.js 3中使用vue路由器将404路由重定向到Home

  18. 18

    如何为具有动态参数的路由禁用 csrf 保护?

  19. 19

    如何在Vue Nuxt应用程序中正确设置动态sitemap.xml路由?

  20. 20

    在Vue3和Vue路由器中获取当前路由的最佳方法?

  21. 21

    如何在角度UI路由器中基于$ stateParams动态创建嵌套状态

  22. 22

    如何在角度UI路由器中基于$ stateParams动态创建嵌套状态

  23. 23

    如果该路由器的IP是动态的,如何远程连接到3G路由器?

  24. 24

    如何在Backbone.Marionette中设置多个路由器和控制器

  25. 25

    如何在Backbone.Marionette中设置多个路由器和控制器

  26. 26

    Vue:限制具有某些角色的用户可以访问路由器中的某些页面 vue-element-admin

  27. 27

    动态 vue 路由器 - beforeEnter - 使用 next() 时无限循环

  28. 28

    子路由未显示在Vue路由器中

  29. 29

    如何在JSX中访问路由器参数?

热门标签

归档