web-dev-qa-db-ja.com

vue-router:クエリの更新時にthis。$ router.Pushが機能しない

URLのクエリを更新したい。ただし、$ router.PushはURLを更新しません。 dispは、呼び出しごとに異なる値です。どうして?

handle: function(disp) {
    let route = Object.assign({}, this.$route);
    route.query.disp = disp;
    this.$router.Push(route);
},

バージョン。

"vue": "^2.5.17",
"vue-router": "^3.0.1",

ルート(console.log)

enter image description here

5
narupo

ルートオブジェクトにプッシュしようとするべきではありません。代わりに、次のいずれかを使用する必要があります。

// literal string path
router.Push('home')

// object
router.Push({ path: 'home' })

// named route
router.Push({ name: 'user', params: { userId: 123 }})

// with query, resulting in /register?plan=private
router.Push({ path: 'register', query: { plan: 'private' }})

あなたの場合:

this.$router.Push({path: this.$route.path, query: {disp: disp}})
2
Niko Peltoniemi

this.$routeオブジェクトのコピーを停止しました。それはうまくいきます。

0
narupo