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.replace
funktioniert wierouter.push
Sie scheinen es also richtig in Ihrem fraglichen Beispielcode zu haben. Ich denke jedoch, dass Sie möglicherweise auch einen name
oder einen path
Parameter einschließen müssen , damit der Router über eine Route verfügt, zu der er navigieren kann. Ohne ein name
oder path
sieht 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
name
oder path
ist 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.id
und Ihre Abfrageparameter als abrufen this.$route.query.q1
.