照会パラメーターによってルーティングする方法はありますか?私は次のルートに一致したい:site.com/?foo=123
。私は照会ルートに一致する照会パラメーター
{ path: '/\?foo=[\d]*' }
のようなものを試してみました。
照会パラメーターによってルーティングする方法はありますか?私は次のルートに一致したい:site.com/?foo=123
。私は照会ルートに一致する照会パラメーター
{ path: '/\?foo=[\d]*' }
のようなものを試してみました。
残念ながら、ルート定義のpath
文字列のクエリパラメータを照合することはできません。
Vueのルータはpath-to-regexp
を使用し、its documentationは言う:
へのパス正規表現によって返された正規表現は、パス名またはホスト名で使用するためのものです。クエリ文字列やURLのフラグメントを処理することはできません。
あなたのparamそうのような名前の後の括弧内の正規表現を指定することで、ルートのparamに一致する正規表現を使用することができます。
{ path: '/:foo([\d]*)' },
しかし、Vueのルーターのルートのparamsに」クエリ内にあること。
Here are some examples of the different route-matching features Vue Router provides.
あなたは本当に、URLのクエリをチェックする必要がある場合は、手動でクエリに一致するbeforeEnter
ハンドラを使用することができますし、それが正しい形式でない場合リルート:
const routes = [{
name: 'home',
path: '/',
component: Home,
beforeEnter(to, from, next) {
if (to.query.foo && to.query.foo.match(/[\d]*/)) {
next({ name: 'foo', query: to.query });
} else {
next();
}
}
}, {
name: 'foo',
path: '/',
component: Foo,
}];
説明、ありがとうございました – Johan
'$ router.push'を呼び出すときに' query'オブジェクトを渡すことができます。それはあなたが意味することですか?あるいは、予想される行動や、さらに明確には機能しないことを記述できますか? – thanksd
@thanksdいいえ、それは私が意味するものではありません。 '/:id'のような"通常の "idとは対照的に、クエリ文字列パラメータに基づいたルートに一致させたい、'/\ id = [\ d] * 'と' /?id = 123' – Johan