Eu vejo nesta solicitação pull :
Adicione um
router.reload()
Recarregue com o caminho atual e chame o gancho de dados novamente
Mas quando tento emitir o seguinte comando de um componente Vue:
this.$router.reload()
Eu recebo este erro:
Uncaught TypeError: this.$router.reload is not a function
Procurei na documentação , mas não encontrei nada relevante. O vue / vue-router fornece alguma funcionalidade como essa?
As versões de software nas quais estou interessado são:
"vue": "^2.1.0",
"vue-router": "^2.0.3",
PS. Eu sei que location.reload()
é uma das alternativas, mas estou procurando uma opção Vue nativa.
fonte
$router.go()
aceita um parâmetro, então você deve usá-lo como$router.go(0)
, o que significa navegar zero páginas de volta no históricowindow.location.reload(forceReload)
parece estar obsoleto, maswindow.location.reload()
está ok.A solução mais simples é adicionar um atributo: key a:
Isso ocorre porque o Vue Router não nota nenhuma mudança se o mesmo componente estiver sendo endereçado. Com a chave, qualquer mudança no caminho irá disparar uma recarga do componente com os novos dados.
fonte
Documentos Vue-Router:
Eu verifiquei o repositório vue-router no GitHub e parece que não há mais
reload()
método. Mas no mesmo arquivo, existe:currentRoute
objeto.Fonte: vue-router / src / index.js
Docs: docs
Agora você pode usar
this.$router.go(this.$router.currentRoute)
para recarregar a rota atual.Exemplo simples .
Versão para esta resposta:
fonte
Safari
Use
router.go(0)
se você usar Typescript e estiver pedindo argumentos para o método go.fonte
router.js
main.js
fonte
É minha recarga. Por causa de algum navegador muito estranho.
location.reload
não pode recarregar.fonte
Resolva a rota para um URL e navegue na janela com 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 substitui o URL e faz com que a página faça uma solicitação completa (atualização) em vez de depender de Vue.router. $ router.go não funciona da mesma forma para mim, embora teoricamente deva funcionar.
fonte
Eu tentei isso para recarregar a página atual.
fonte
Notas:
#
deve ter algum valor depois disso.setTimeout
,$nextTick
para não manter o url limpo.fonte
Para renderizar novamente, você pode usar no componente pai
fonte
por que você não usa o método forceUpdate?
fonte