【问题标题】:Is it possible to set specific VueRouter props?是否可以设置特定的 VueRouter 道具?
【发布时间】:2019-08-23 08:57:22
【问题描述】:

使用 VueRouter,我想启用这些 URL 的入口:

  • category/apple
  • category/banana
  • category/pear

是否可以将路由器参数限制为某些字符串? (香蕉、苹果、梨)?

我在文档中找不到任何关于此的内容。我用谷歌搜索了一些其他不起作用的解决方案:

{
    path:       'category/:categoryType',
    props:      true, 
    /*props: {
        validator: function (value) {
            return ( value === 'banana' || value === 'apple' || value === 'pear');
        }
    },*/
    component:  someComponent
},

我现在能想到的唯一解决方案是在组件内的created() 中验证这一点。

【问题讨论】:

    标签: javascript vue.js ecmascript-6 vuejs2 vue-router


    【解决方案1】:

    我认为这段代码是你的情况的解决方案:

    const allowedCategoryNames = ['apple', 'banana', 'pear'];
    const categoryRoutePath = '/category/:categoryName(' + allowedCategoryNames.join('|') + ')';
    {
        path:       categoryRoutePath,
        props:      true,
        component:  someComponent
    },
    

    在您的组件中,您可以像这样获得当前的可爱名称:

    const currentCategory = this.$route.params.categoryName;
    

    应该可以的 =) 一些例子可以在这里找到:vue-router regexp examples

    【讨论】:

    • 如果你设置了props: true,那么路由参数可以通过this.categoryName访问。
    • 我不能将整个 categoryRoutePath 变量作为字符串添加到 path: 下吗?为什么必须将其设置在变量中? (没有测试过,是的,afk)。
    • @wellhellothere,我已经测试了上面的代码 =) 当然,您可以添加字符串文字而不是变量,但是如果您扩展类别名称列表,则需要编辑路线小路。无论如何,您可以将path: categoryRoutePath 替换为path: '/category/:categoryName(apple|banana|pear)'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多