Ось приклад у документах:
// 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
.