vue刷新當前路由:router-view 復用組件時不刷新的3種解決方案總結

  vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構建單頁面應用。vue的單頁面應用是基于路由和組件的,路由用于設定訪問路徑,并將路徑和組件映射起來。傳統的頁面應用,是用一些超鏈接來實現頁面切換和跳轉的。在vue-router單頁面應用中,則是路徑之間的切換,也就是組件的切換。

  對于路由,不同的路由跳轉,vue會幫我們刷新路由,但是我今天要說的是,同一路由刷新我們的解決方法。

問題背景:

  點擊用戶頭像 => 進入用戶個人中心,在用戶個人中心里點擊其他用戶的頭像,我希望顯示被點擊用戶的個人中心,但只看到了路由參數在發生變化,頁面內容并沒有更新。

<script>export default {data() {return { data: {} } }, methods: { fetchDate() { // 使用 axios獲取數據  ...... }, created() { this.fetchDate(); } } </script>

解決辦法:

  使用 watch,觀察路由,一旦發生變化便重新獲取數據!

<script>export default {data() {return { data: {} } }, methods: { fetchDate() { // 使用 axios獲取數據  ...... }, created() { // 組件創建完后獲取數據, // 此時 data 已經被 observed 了 this.fetchDate(); }, watch: { // 如果路由有變化,會再次執行該方法 "$route": "fetchDate" } } </script>

拓展學習

  在使用Vue-router做項目時,會遇到如/serviceId/:id這樣只改變id號的場景。由于router-view是復用的,單純的改變id號并不會刷新router-view,而這并不是我們所期望的結果

  當然,我們可以在點擊事件上加上router.go(0),強制刷新整個頁面來滿足效果。但頁面整體的刷新會使體驗下降,并且作為個人也不是很能接受這樣的方法。在查閱了一些資料后,發現可以有以下兩種方法可以解決問題。

1、使用watch方法

  watch方法據說是官方推薦的方法(抱歉,我沒好好看文檔)。當id發生變化時,'$route'也會相應地發生變化,因此可以通過watch的方法來進行操作

watch: {'$route': function (to, from) {// 我這里還是用了Vuex,不過應該不影響理解this.$store.dispatch('updateActiveTemplateId', this.$route.params.templateId)// 通過更新Vuex中的store的數據,讓數據發生變化this.getTemplateById()}
},

2、通過改變router-view中的key來達到刷新組件的目的,我現在用的就是這種方法(因為我使用的按需加載,所以加載組件也不會加載所有界面)

<router-view :key="activeDate"></router-view>
//我用了一個簡單粗暴的方式來改變key,時間戳(捂臉)
//this.activeDate = new Date()

3、還有一種官方文檔的方法

  后來看博客有了新方案——beforeRouteLeave

  在組件內直接使用,前提是你用了vue-router:

beforeRouteLeave (to, from, next) {// 導航離開該組件的對應路由時調用// 可以訪問組件實例 `this`
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254653.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254653.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254653.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

KUKA---US2電源的安全屬性-------老款硬線連接實現的DRIVE安全STO SBC 、新款基于Safety over EtherCAT 網絡幀實現的DRIVE安全STO SBC

安全雙回路的監控&#xff1a;&#xff08;工業上的安全&#xff0c;是指安全等級&#xff0c;沒有絕對的安全&#xff09; 1. 機械式&#xff1a;監控關斷繼電器的輔助反饋觸點&#xff0c;這個關斷繼電器包含機械聯鎖觸點&#xff0c;這樣反饋觸點和主觸點可以同步開關動…

C#6.0中$的用法

C#6.0中$的用法 這里注意只有VS2015及以上VS版本才支持這樣寫&#xff01; 如果使用vs2015以下版本就去用string.format()吧&#xff01; //C#6.0中$的用法&#xff1a;是為了替代string.format();//原先賦值需要占位符和變量&#xff0c;當需要拼接多個變量會造成語句過長等不…

Oracle密碼過期問題 ORA-28001:the password has expired

如果已經過期了&#xff0c;首先需要修改密碼&#xff0c;然后設置密碼為無限期。修改以sys用戶登陸。 修改密碼&#xff1a;alter user username identified by password 密碼可以和之前的密碼相同也可以不同。 修改數據庫密碼為無限期&#xff1a; Oracle的密碼過期規則是用…

X11硬線接口信號 與Profisafe安全輸入輸出信號之間的區別與比較

&#xfeff;&#xfeff;X11硬線接口信號 與Profisafe安全輸入輸出信號之間的區別與比較 Profisafe安全輸入信號US2信號有待深入&#xff08;通過外部PLC &#xff1a;&#xff09; &#xfeff;&#xfeff;

預處理指令pragma常見用法集錦(#pragma once、#pragma comment和#pragma warning)

#pragma once&#xff1a; 這是一個比較常用的指令,只要在頭文件的最開始加入這條指令就能夠保證頭文件被編譯一次&#xff0c;避免文件被重復包含。 *********************************** 例如 ***************************************** 頭文件中的 #if _MSC_VER > 100…

var類型推斷關鍵字

目錄var 類型推斷介紹var的一個例子&#xff1a;編程遵循規則var 類型推斷介紹 使用var定義變量時&#xff0c;用var關鍵字替代實際類型。編譯器可以根據變量的初始化值自行“推斷”變量的類型。 例如&#xff1a; var A 0&#xff1b; 等價于 int A 0&#xff1b;var的一個…

《程序員修煉之道》筆記(九)

*續 第八章 注重實效的項目 1. 無處不在的自動化 文明通過增加我們不假思索就能完成的重要操作的數目而取得進步。 無論是構建和發布流程、是書面的代碼復查工作、還是其他任何在項目中反復出現的任務&#xff0c;都必須是自動的。人工流程不能保證一致性&#xff0c;也無法保證…

flutter image boxfit

直接從官網文檔中復制記錄&#xff0c;方便以后查看contain → const BoxFitAs large as possible while still containing the source entirely within the target box.const BoxFit(1)cover → const BoxFitAs small as possible while still covering the entire target box…

rvm RuvyGem Cocoapods brew

開始的時候&#xff0c;我僅想升級一下cocoapods的版本&#xff0c;因為我xcode報三十多個相似警告&#xff0c;說第三方找不到相應文件&#xff0c;我看cocoapods版本有1.0.1&#xff0c;而我使用的依舊是1.0.0的老版本。當我升級cocoapods時&#xff0c;需要使用gem來更新coc…

Linux系統目錄說明

以前稍稍接觸過Linux系統&#xff0c;現今&#xff0c;因工作需要要更進一步學習Linux系統的相關程序開發。因此對于目錄&#xff08;路徑&#xff09;的了解及很重要了。/bin&#xff1a;是Binary的縮寫&#xff0c;這里保存了一百多個Linux下常用的命令、工具&#xff1b;這是…

const常量用法

目錄定義語法特點優點定義 常量就是在使用過程中不會變化的量叫做常量。 語法 const int A 100;//常量不允許改變特點 常量必須在聲明時初始化&#xff1b;常量的值必須在編譯時就定義好&#xff1b;常量總是隱式靜態的&#xff1b; 優點 易讀&#xff0c;易于程序修改&…

斯坦福大學機器學習——高斯判別分析

轉自 http://blog.csdn.net/linkin1005/article/details/39054023 同樸素貝葉斯一樣&#xff0c;高斯判別分析&#xff08;Gaussian discriminant analysismodel, GDA&#xff09;也是一種生成學習算法&#xff0c;在該模型中&#xff0c;我們假設y給定的情況下&#xff0c;x服…

嘉實多RO150合成齒輪油

&#xfeff;&#xfeff;Optigear ?合成 RO 是一個特殊的高性能&#xff0c;長期多級油特別為齒輪 軌道交通&#xff0c;機械工程應用中&#xff0c;一個極端的氣候條件和長期使用。 “ Microflux 跨的添加劑組合是免費的固體潤滑劑&#xff0c;甚至適應迅速變化的環境和積極…

線程隊列-queue

使用隊列的目的&#xff1a;解耦&#xff0c;使程序之間實現松耦合&#xff1b;提高處理效率FIFO 先進先出&#xff0c;first in first outLIFO 后入先出&#xff0c;last in first out生產者消費者模型使用方式1 import queue 2 3 #創建隊列對象&#xff0c;設置隊列大小ma…

MapGIS轉Shp文件的單位問題

MapGIS轉Shp文件的單位問題 原文:MapGIS轉Shp文件的單位問題在MapGIS瀏覽查看一下數據&#xff0c;各種不習慣&#xff1b;用mapgis自帶的轉shp功能&#xff0c;屬性表會出錯&#xff1b;利用名為map2shp的試用版軟件可將mapgis格式的數據較為良好轉成shp格式。但經常會遇到一個…

halcon2D Metrology測量算子,卡尺測量算子,持續更新

目錄2D Metrology1. add_metrology_object_circle_measure2. add_metrology_object_ellipse_measure3. add_metrology_object_generic4. add_metrology_object_line_measure5. add_metrology_object_rectangle2_measure6. align_metrology_model7. apply_metrology_model8. cle…

項目經理的職責

項目經理的職責&#xff1a; 1、項目范圍的定義 2、項目計劃的制定、分解、分配、協調、匯報 3、項目質量控制 4、項目需求變更配置 工作職責&#xff1a; 1、負責產品的研發任務的立項計劃及實施&#xff1b; 2、負責收集統計各項資料數據&#xff0c;完成自主研發部…

顯示/隱藏Mac系統中所有的隱藏文件

顯示&#xff1a; 在終端輸入:defaults write com.apple.finder AppleShowAllFiles YES隱藏: 在終端輸入:defaults write com.apple.finder AppleShowAllFiles NO然后重啟Finder即可(先點擊左上角的蘋果圖標&#xff0c;再選強制退出&#xff0c;然后選中Finder&#xff0c;點擊…

機械零點、MAM 文件 、 EMT標定原理

&#xfeff;&#xfeff; 機械零點、MAM 文件、EMT標定原理。 可調節的機械零點&#xff0c;不需要MAM文件&#xff0c;使之成為90度。 不可調節的機械零點&#xff0c;需要MAM文件修正&#xff0c;使之成為90度。 帶負載的偏移補償、帶負載的偏移補償mastering。做過帶負…