Ecco l'esempio nei documenti:
// with query, resulting in /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})
Rif: https://router.vuejs.org/en/essentials/navigation.html
Come accennato in quei documenti, router.replace
funziona comerouter.push
Quindi, sembra che tu abbia ragione nel tuo codice di esempio in questione. Ma penso che potrebbe essere necessario includere anche il parametro name
o path
, in modo che il router abbia un percorso verso cui navigare. Senza un name
o path
, non sembra molto significativo.
Questa è la mia comprensione attuale ora:
query
è opzionale per il router: alcune informazioni aggiuntive per il componente per costruire la vista
name
o path
è obbligatorio: decide quale componente mostrare nel tuo file <router-view>
.
Questa potrebbe essere la cosa mancante nel tuo codice di esempio.
EDIT: ulteriori dettagli dopo i commenti
Hai provato a utilizzare percorsi denominati in questo caso? Hai percorsi dinamici ed è più facile fornire parametri e query separatamente:
routes: [
{ name: 'user-view', path: '/user/:id', component: UserView },
// other routes
]
e poi nei tuoi metodi:
this.$router.replace({ name: "user-view", params: {id:"123"}, query: {q1: "q1"} })
Tecnicamente non c'è differenza tra quanto sopra e this.$router.replace({path: "/user/123", query:{q1: "q1"}})
, ma è più facile fornire parametri dinamici sulle rotte nominate che comporre la stringa della rotta. Ma in entrambi i casi, è necessario tenere in considerazione i parametri della query. In entrambi i casi, non sono riuscito a trovare nulla di sbagliato nel modo in cui vengono gestiti i parametri delle query.
Dopo essere entrato nel percorso, puoi recuperare i tuoi parametri dinamici come this.$route.params.id
e i parametri della query come this.$route.query.q1
.