【问题标题】:Can vue routes have a default value for a parameter?vue路由可以有参数默认值吗?
【发布时间】:2023-02-25 03:03:45
【问题描述】:

想象一条具有以下路径的路线: ':uuid*/form/:step'

我们可以在路由器定义中指定步骤参数的默认值吗?

我已经尝试在视图的创建函数上设置此值,但我试图避免重定向。

【问题讨论】:

    标签: vue.js vue-router


    【解决方案1】:

    简短的回答是:不,你不能。

    如果用户转到:uuid/form,您必须使用默认步骤值重定向他。但是如果 /uuid/form 页面指向同一个页面组件,重定向不会导致重新渲染,所以从用户的角度来看它几乎是透明的。

    如果您控制到此页面的导航,如果不存在,只需在代码中自己设置一个默认值:

    const step = userStep || 'defaultStep'
    this.$router.push(`/${myUuid}/form/${step}`)
    

    【讨论】:

      【解决方案2】:

      您可以使用 router navigation guard 实现类似的目的:

      routes = [
        {
          name: 'FormStep',
          path: ':uuid*/form/:step'
          beforeEnter(route) {
            return { 
              path: route.path, 
              params: {
                ...route.params,
                step: route.params.step ?? defaultStep
              }
            }
          }
        }
      ]
      

      【讨论】:

        猜你喜欢
        • 2012-09-13
        • 2023-04-01
        • 2018-12-18
        • 2011-04-18
        • 2014-04-28
        • 1970-01-01
        • 2013-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多