LoginSignup
1
0

More than 3 years have passed since last update.

$router.push()でqueryを変更したときに反映されない場合

Posted at

ちょっとハマったのでメモ。
VueのRouterは変更を完全一致でチェックしているそうです。

例えば以下のようにソート条件を加えて新しいクエリストリングに変更してURLを変える場合。

sort() {
  const query = this.$route.query
  query.sort = this.sort
  this.$router.push({ path: '/search', query })
},

これだと反映されません。
なぜかとしうとシャローコピーで this.$route.queryquery が同じ値になるからです。

これを回避するには

sort() {
  const query = Object.assign({}, this.$route.query)
  query.sort = this.sort
  this.$router.push({ path: '/search', query })
},

してやると動きます。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0