Widzę w tym żądaniu pull :
Dodać
router.reload()
Wczytaj ponownie aktualną ścieżkę i ponownie wywołaj hak danych
Ale kiedy próbuję wydać następujące polecenie ze składnika Vue:
this.$router.reload()
Otrzymuję ten błąd:
Uncaught TypeError: this.$router.reload is not a function
Szukałem w dokumentach , ale nie znalazłem nic odpowiedniego. Czy dostawca vue / vue-routera ma taką funkcjonalność?
Interesujące mnie wersje oprogramowania:
"vue": "^2.1.0",
"vue-router": "^2.0.3",
PS. Wiem, że location.reload()
to jedna z alternatyw, ale szukam rodzimej opcji Vue.
źródło
$router.go()
akceptuje jeden parametr, więc powinieneś go używać jako$router.go(0)
, co oznacza, że nie cofasz się do żadnych stron w historiiwindow.location.reload(forceReload)
wydaje się być przestarzała, alewindow.location.reload()
jest w porządku.Najprostszym rozwiązaniem jest dodanie atrybutu: key do:
Dzieje się tak, ponieważ Vue Router nie zauważa żadnej zmiany, jeśli adresowany jest ten sam komponent. Za pomocą klawisza każda zmiana ścieżki spowoduje ponowne załadowanie komponentu nowymi danymi.
źródło
Dokumentacja Vue-Router:
Sprawdziłem repozytorium vue-router na GitHubie i wygląda na to, że nie ma już
reload()
metody. Ale w tym samym pliku jest:currentRoute
obiekt.Źródło: vue-router / src / index.js
Docs: docs
Teraz możesz użyć
this.$router.go(this.$router.currentRoute)
do przeładowania aktualnej trasy.Prosty przykład .
Wersja dla tej odpowiedzi:
źródło
Safari
Użyj,
router.go(0)
jeśli używasz Typescript i prosi o argumenty dla metody go.źródło
router.js
main.js
źródło
To moje przeładowanie. Z powodu jakiejś przeglądarki jest bardzo dziwna.
location.reload
nie można przeładować.źródło
Wyznacz trasę do adresu URL i przejdź przez okno za pomocą JavaScript.
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)
Ta metoda zastępuje adres URL i powoduje, że strona wykonuje pełne żądanie (odświeżanie) zamiast polegać na Vue.router. $ router.go nie działa u mnie tak samo, chociaż teoretycznie tak powinno.
źródło
Próbowałem tego w celu ponownego załadowania bieżącej strony.
źródło
dlaczego nie używasz metody forceUpdate?
źródło
Uwagi:
#
musi mieć jakąś wartość.setTimeout
,$nextTick
aby nie utrzymywać czystego adresu URL.źródło
Do ponownego wydania można użyć w komponencie nadrzędnym
źródło