Veo en esta solicitud de extracción :
Agrega un
router.reload()
Recargue con la ruta actual y vuelva a llamar al gancho de datos
Pero cuando intento emitir el siguiente comando desde un componente de Vue:
this.$router.reload()
Me sale este error:
Uncaught TypeError: this.$router.reload is not a function
Busqué en los documentos , pero no pude encontrar nada relevante. ¿El proveedor de vue / vue-router tiene alguna funcionalidad como esta?
Las versiones de software que me interesan son:
"vue": "^2.1.0",
"vue-router": "^2.0.3",
PD. Sé que location.reload()
es una de las alternativas, pero estoy buscando una opción nativa de Vue.
fuente
$router.go()
acepta un parámetro, por lo que debe usarlo como$router.go(0)
, es decir, navegar por cero páginas en el historialwindow.location.reload(forceReload)
parece estar en desuso, perowindow.location.reload()
está bien.La solución más simple es agregar un atributo: key a:
Esto se debe a que Vue Router no nota ningún cambio si se está direccionando el mismo componente. Con la clave, cualquier cambio en la ruta activará una recarga del componente con los nuevos datos.
fuente
Documentos de Vue-Router:
Revisé el repositorio de vue-router en GitHub y parece que ya no hay
reload()
método. Pero en el mismo archivo, hay:currentRoute
objeto.Fuente: vue-router / src / index.js
Docs: docs
Ahora puede utilizar
this.$router.go(this.$router.currentRoute)
para recargar la ruta actual.Ejemplo sencillo .
Versión para esta respuesta:
fuente
Safari
Úselo
router.go(0)
si usa TypeScript y solicita argumentos para el método go.fuente
router.js
main.js
fuente
Es mi recarga. Debido a un navegador muy extraño.
location.reload
no se puede recargar.fuente
Resuelva la ruta a una URL y navegue por la ventana con 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)
Este método reemplaza la URL y hace que la página realice una solicitud completa (actualización) en lugar de depender de Vue.router. $ router.go no funciona igual para mí, aunque teóricamente se supone que lo haga.
fuente
He intentado esto para volver a cargar la página actual.
fuente
¿Por qué no usas el método forceUpdate?
fuente
Notas:
#
debe tener algún valor después de eso.setTimeout
, no$nextTick
para mantener limpia la URL.fuente
Para volver a renderizar, puede usar en el componente principal
fuente