vue-router 3.0版本中 router.push 不能革新頁面的題目

在 github 的 vue-router 中找到一樣的一個題目:
3.0.1版本經由過程router實例沒法跳轉

昨天發明有些路由不能一般跳轉,找了一下發明都是那些實例化后運用 router.push 而不是直接運用 this.$router.push 的處所。
湧現的狀況是 router.push 后,url變化了,然則頁面沒有革新,手動革新一下才湧現應有的畫面。

我看了一下 package.json,我的 vue 和 axios 是沒有寫版本號,但 vue-router 明顯寫了版本號,怎麼可能以前行的,如今就不可了呢?

然後,我運用 npm view vue-router 查看后才發明運用的已不是 package.json 中的版本了,因而判斷也許是我頭幾天 npm update 了!

( 今後不要隨意 update 了! )

詳細為何新版本不可了,我也不太清晰。
最簡樸的解決辦法當然是直接把 router.push 改成 this.$router.push

然則,假如如許能夠的話,我當初為何要在組件內再實例化一個 Router 呢?
明顯是由於有些處所的 this 並非 vue,那末,再實例化一個 vue,然後運用 vue.$router 行嗎?
答案當然是不可的,由於這個 vue 與 別的處所的 vue 應當又不是同一個對象了。

那末,最終的解決方案就是:
把全局的 vue 中的 router 加到 window 中,也就在 main.js 中運用:

window.router=router

然後別的任何處所就能夠直接愉快地運用 router.push 等 router 的要領了。

剖析緣由:
實例后的 router 不能革新頁面,應當是由於它與全局的vue中的 this.$router 的不是同一個,而之前的版本中能直接如許運用,應當是運用了單例。
至於為何不運用單例了,這個我怎麼會曉得?

    原文作者:agui1989
    原文地址: https://segmentfault.com/a/1190000014803149
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞