Oto przykład w dokumentach:
// with query, resulting in /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})
Ref: https://router.vuejs.org/en/essentials/navigation.html
Jak wspomniano w tych dokumentach, router.replacedziała jakrouter.push
Wygląda więc na to, że masz to dobrze w swoim przykładowym kodzie. Myślę jednak, że może być konieczne uwzględnienie jednego z parametrów namelub path, aby router miał jakąś trasę, do której należy nawigować. Bez namelub pathnie wygląda to zbytnio.
Oto moje obecne rozumienie teraz:
query jest opcjonalne dla routera - dodatkowe informacje dla komponentu, aby utworzyć widok
namelub pathjest obowiązkowe - decyduje, który komponent ma się pojawić w Twoim <router-view>.
To może być brakująca rzecz w twoim przykładowym kodzie.
EDYCJA: Dodatkowe szczegóły po komentarzach
Czy próbowałeś używać nazwanych tras w tym przypadku? Masz trasy dynamiczne i łatwiej jest osobno podać parametry i zapytania:
routes: [
{ name: 'user-view', path: '/user/:id', component: UserView },
// other routes
]
a następnie w swoich metodach:
this.$router.replace({ name: "user-view", params: {id:"123"}, query: {q1: "q1"} })
Technicznie nie ma różnicy między powyższymi a this.$router.replace({path: "/user/123", query:{q1: "q1"}}), ale łatwiej jest podać parametry dynamiczne dla nazwanych tras niż tworzenie ciągu trasy. Ale w obu przypadkach należy wziąć pod uwagę parametry zapytania. W obu przypadkach nie mogłem znaleźć nic złego w sposobie obsługi parametrów zapytania.
Po znalezieniu się w trasie możesz pobrać parametry dynamiczne jako, this.$route.params.ida parametry zapytania jako this.$route.query.q1.