Hier ist das Beispiel in Dokumenten:
// with query, resulting in /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})
Ref: https://router.vuejs.org/en/essentials/navigation.html
Wie in diesen Dokumenten erwähnt, router.replacefunktioniert wierouter.push
Sie scheinen es also richtig in Ihrem fraglichen Beispielcode zu haben. Ich denke jedoch, dass Sie möglicherweise auch einen nameoder einen pathParameter einschließen müssen , damit der Router über eine Route verfügt, zu der er navigieren kann. Ohne ein nameoder pathsieht es nicht sehr aussagekräftig aus.
Dies ist mein derzeitiges Verständnis:
query ist für den Router optional - einige zusätzliche Informationen für die Komponente zum Erstellen der Ansicht
nameoder pathist obligatorisch - es entscheidet, welche Komponente in Ihrem angezeigt werden soll <router-view>.
Dies könnte das fehlende Element in Ihrem Beispielcode sein.
EDIT: Zusätzliche Details nach Kommentaren
Haben Sie in diesem Fall versucht, benannte Routen zu verwenden? Sie haben dynamische Routen und es ist einfacher, Parameter und Abfragen separat bereitzustellen:
routes: [
{ name: 'user-view', path: '/user/:id', component: UserView },
// other routes
]
und dann in Ihren Methoden:
this.$router.replace({ name: "user-view", params: {id:"123"}, query: {q1: "q1"} })
Technisch gibt es keinen Unterschied zwischen den oben genannten und this.$router.replace({path: "/user/123", query:{q1: "q1"}}), aber es ist einfacher, dynamische Parameter auf benannten Routen anzugeben, als die Routenzeichenfolge zu erstellen. In beiden Fällen sollten jedoch Abfrageparameter berücksichtigt werden. In beiden Fällen konnte ich keine Fehler bei der Behandlung von Abfrageparametern feststellen.
Nachdem Sie sich innerhalb der Route befinden, können Sie Ihre dynamischen Parameter als this.$route.params.idund Ihre Abfrageparameter als abrufen this.$route.query.q1.