Вот пример в документации:
// 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>
.
Возможно, этого не хватает в вашем примере кода.
РЕДАКТИРОВАТЬ: дополнительные сведения после комментариев
Вы пробовали использовать в этом случае именованные маршруты ? У вас есть динамические маршруты, и проще предоставить параметры и запрос отдельно:
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
.