Ось приклад у документах:
// with query, resulting in /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})
Посилання: https://router.vuejs.org/en/essentials/navigation.html
Як згадувалося в цих документах, router.replaceпрацює такrouter.push
Отже, ви, здається, маєте це право у відповідному зразковому коді. Але я думаю, вам може знадобитися включити nameабо pathпараметр також, щоб маршрутизатор мав певний маршрут, до якого слід переходити. Без nameабо pathце не виглядає дуже значущим.
Це зараз моє розуміння:
query необов'язковий для маршрутизатора - деяка додаткова інформація для компонента для побудови представлення
nameабо pathє обов'язковим - він визначає, який компонент показати у вашому <router-view>.
Це може бути відсутнім у вашому зразку коду.
EDIT: Додаткові деталі після коментарів
Чи намагалися ви в цьому випадку використовувати названі маршрути ? У вас є динамічні маршрути, і простіше надати параметри та запити окремо:
routes: [
{ name: 'user-view', path: '/user/:id', component: UserView },
// other routes
]
а потім у ваших методах:
this.$router.replace({ name: "user-view", params: {id:"123"}, query: {q1: "q1"} })
Технічно немає різниці між вищезазначеними та this.$router.replace({path: "/user/123", query:{q1: "q1"}}), але легше подавати динамічні параметри для названих маршрутів, ніж складати рядок маршруту. Але в обох випадках слід враховувати параметри запитів. В будь-якому випадку я не міг знайти нічого поганого в тому, як обробляються парами запитів.
Після того, як ви перебуваєте всередині маршруту, ви можете отримати свої динамічні параметри як this.$route.params.idі ваші параметри запиту як this.$route.query.q1.