想必大家在刨坑vue的時(shí)候也遇到過(guò)下面情形:比如在刪除或者增加一條記錄的時(shí)候希望當(dāng)前頁(yè)面可以重新刷新或者如下面這種:

如果希望點(diǎn)擊確定的時(shí)候,Dialog 對(duì)話框關(guān)閉的時(shí)候,當(dāng)前http://localhost:9530/#/supplier/supplierAll頁(yè)面可以重新刷新下
那么表格的數(shù)據(jù)可以重新加載,Dialog 對(duì)話框設(shè)置的數(shù)據(jù)可以在確定后刷新出現(xiàn)在頁(yè)面上
這時(shí)候我們最直接的思維就是想到下面這種:

但是,試過(guò)的會(huì)發(fā)現(xiàn)用vue-router重新路由到當(dāng)前頁(yè)面,頁(yè)面是不進(jìn)行刷新的,根本沒(méi)有任何作用~所以這個(gè)方法out!
下面我這邊整理幾種可圈可點(diǎn)的三種方式,大家可以自行的選擇:
1、最直接整個(gè)頁(yè)面重新刷新:

location. reload()
this.$router.go(0)
這兩種都可以刷新當(dāng)前頁(yè)面的,缺點(diǎn)就是相當(dāng)于按ctrl+F5 強(qiáng)制刷新那種,整個(gè)頁(yè)面重新加載,會(huì)出現(xiàn)一個(gè)瞬間的空白頁(yè)面,體驗(yàn)不好
2、新建一個(gè)空白頁(yè)面supplierAllBack.vue,點(diǎn)擊確定的時(shí)候先跳轉(zhuǎn)到這個(gè)空白頁(yè),然后再立馬跳轉(zhuǎn)回來(lái)

空白頁(yè)supplierAllBack.vue里面的內(nèi)容:

這個(gè)方式,相比第一種不會(huì)出現(xiàn)一瞬間的空白頁(yè),只是地址欄有個(gè)快速的切換的過(guò)程,可采用
3、provide / inject 組合 方式是我試過(guò)最實(shí)用的,下面用項(xiàng)目截圖給大家說(shuō)明下:首先,要修改下你的app.vue
參考資料:https://blog.csdn.net/lfcss/article/details/88786332
image.png
通過(guò)聲明reload方法,控制router-view的顯示或隱藏,從而控制頁(yè)面的再次加載,這邊定義了
isRouterAlive //true or false 來(lái)控制
然后在需要當(dāng)前頁(yè)面刷新的頁(yè)面中注入App.vue組件提供(provide)的 reload 依賴,然后直接用this.reload來(lái)調(diào)用就行

4、直接初始化vue的數(shù)據(jù)
Object.assign(this.$data, this.$options.data())
