javascript - 在 Vue 路由器路径中使用正则表达式

标签 javascript vue.js vue-router

我正在创建一个大量使用 vue 路由器的 VueJS 应用程序。

这是我的 routes.js 的结构:

export const routes = [
    { path: '', component: Poetry, children: [
        { path: '', name: 'poetry', component: PoetryLanding },
        { path: 'poetry/:id', name: 'poetrycard', component: PoetryCard },
        { path: 'poetry/search', name: 'poetrysearch', component: PoetrySearch },
    ]},
]

我想在第二个子组件中使用正则表达式,即 poetrycard,这样它只接受作为数字的 params(:id)。我这样做是因为 poetrysearch 受到影响,因为 /search 被视为 :id!

我试过:

{ path: 'poetry/:id/[0-9]/g', name: 'poetrycard', component: PoetryCard }

但这行不通。请帮忙。

最佳答案

vue-router uses path-to-regexp as its path matching engine, so it supports many advanced matching patterns such as optional dynamic segments, zero or more / one or more requirements, and even custom regex patterns.

所以改变你的路由定义如下:

{ path: 'poetry/:id(\\d+)', name: 'poetrycard', component: PoetryCard }

引用- Advanced Matching patterns

关于javascript - 在 Vue 路由器路径中使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51302405/

相关文章:

javascript - 动态设置下拉菜单jquery

javascript - 克隆 div 并通过 onclick 更改样式

javascript - 如何将参数传递给使用 setTimeout 调用的函数?

javascript - 如何在 Vue JS 观察器中更改对象的属性而不产生无限循环?

html - 为什么放置到 <router-link> 的标签 <img> 默认获得 CSS 属性 "display:none !important"?如何避免这种情况?

javascript - 编辑文本 Fabricjs - IText 格式字母和同时选择 textDecoration

javascript - 如何测试从 VueX 观察计算属性的 Vue 观察者?

firebase - 如何将 Firebase Firestore 数据添加到 SSR Nuxt Apps Vuex Store

vue.js - 使用Vue在单文件组件中调用render方法

vuejs2 - 在突变 (Vuex) 后更改路由 (VueRouter) 的最佳实践