Ich sehe in dieser Pull-Anfrage :
Füge hinzu ein
router.reload()
Laden Sie mit dem aktuellen Pfad neu und rufen Sie den Daten-Hook erneut auf
Aber wenn ich versuche, den folgenden Befehl von einer Vue-Komponente auszugeben:
this.$router.reload()
Ich erhalte diesen Fehler:
Uncaught TypeError: this.$router.reload is not a function
Ich habe in den Dokumenten gesucht , aber nichts Relevantes gefunden. Bietet vue / vue-router solche Funktionen an?
Die Softwareversionen, an denen ich interessiert bin, sind:
"vue": "^2.1.0",
"vue-router": "^2.0.3",
PS. Ich weiß, dass dies location.reload()
eine der Alternativen ist, aber ich suche nach einer nativen Vue-Option.
quelle
$router.go()
ein Parameter akzeptiert wird, daher sollten Sie ihn als verwenden$router.go(0)
, was bedeutet , dass Sie null Seiten zurück im Verlauf navigierenwindow.location.reload(forceReload)
scheint veraltet zu sein, ist aberwindow.location.reload()
in Ordnung.Die einfachste Lösung besteht darin, Folgendes hinzuzufügen: ein Schlüsselattribut:
Dies liegt daran, dass Vue Router keine Änderung bemerkt, wenn dieselbe Komponente angesprochen wird. Mit dem Schlüssel löst jede Änderung des Pfads ein erneutes Laden der Komponente mit den neuen Daten aus.
quelle
Vue-Router-Dokumente:
Ich habe das Vue-Router-Repo auf GitHub überprüft und es scheint, dass es keine
reload()
Methode mehr gibt. In derselben Datei befindet sich jedoch:currentRoute
Objekt.Quelle: vue-router / src / index.js Dokumente
: Dokumente
Jetzt können Sie die
this.$router.go(this.$router.currentRoute)
aktuelle Route neu laden.Einfaches Beispiel .
Version für diese Antwort:
quelle
Safari
Verwenden
router.go(0)
Sie diese Option, wenn Sie Typescript verwenden und Argumente für die go-Methode gefragt werden.quelle
router.js
main.js
quelle
Es ist mein Nachladen. Wegen eines Browsers sehr komisch.
location.reload
kann nicht neu laden.quelle
Lösen Sie die Route zu einer URL auf und navigieren Sie mit Javascript durch das Fenster.
let r = this.$router.resolve({ name: this.$route.name, // put your route information in params: this.$route.params, // put your route information in query: this.$route.query // put your route information in }); window.location.assign(r.href)
Diese Methode ersetzt die URL und bewirkt, dass die Seite eine vollständige Anforderung (Aktualisierung) ausführt, anstatt sich auf Vue.router zu verlassen. $ router.go funktioniert bei mir nicht gleich, obwohl es theoretisch so sein soll.
quelle
Ich habe dies versucht, um die aktuelle Seite neu zu laden.
quelle
Warum verwenden Sie nicht die forceUpdate-Methode?
quelle
Anmerkungen:
#
muss einen Wert danach haben.setTimeout
,$nextTick
um die URL nicht sauber zu halten.quelle
Zum erneuten Rendern können Sie in der übergeordneten Komponente verwenden
quelle