ちょっとハマったのでメモ。
VueのRouterは変更を完全一致でチェックしているそうです。
例えば以下のようにソート条件を加えて新しいクエリストリングに変更してURLを変える場合。
sort() {
const query = this.$route.query
query.sort = this.sort
this.$router.push({ path: '/search', query })
},
これだと反映されません。
なぜかとしうとシャローコピーで this.$route.query
と query
が同じ値になるからです。
これを回避するには
sort() {
const query = Object.assign({}, this.$route.query)
query.sort = this.sort
this.$router.push({ path: '/search', query })
},
してやると動きます。