關(guān)于vue的keep-alive緩存頁面使用$destroy后不能在次緩存的另一種解決方案

如標(biāo)題呀页,有個需求如下:

有三個頁面A妈拌、B、C。A跳轉(zhuǎn)B尘分,B再跳轉(zhuǎn)C猜惋,然后C返回B的時候B需要緩存,包括它的轉(zhuǎn)跳C之前的數(shù)據(jù)與滾動的高度培愁,然后再由B跳轉(zhuǎn)回A以后著摔,在由A頁面跳轉(zhuǎn)進(jìn)B時需要重新刷新B的數(shù)據(jù)。

具體點:

A頁面是一個商店的商品列表:

  1. 本子
  2. 鉛筆
  3. 書包

B頁面是一個訂單列表(如A的鉛筆商品的所有訂單):

  1. 訂單1
  2. 訂單2
  3. 訂單3
  4. 訂單4
  5. 訂單5

C頁面是訂單詳情(B的某個訂單的詳情)

訂單詳情頁

我選擇了A的鉛筆定续,然后跳轉(zhuǎn)到B谍咆,所有跟鉛筆的訂單列表出來了,我往下滾動找到訂單5私股,然后點擊了訂單5摹察,跳轉(zhuǎn)C頁面顯示訂單5的訂單詳情。
然后我從C返回B的時候倡鲸,需要停留在我點擊了訂單5的高度以及所有數(shù)據(jù)都不能刷新供嚎。
然后我又從B返回了A,選擇了本子商品跳轉(zhuǎn)B峭状,然后B要刷新成本子商品的訂單列表克滴,然后跳轉(zhuǎn)C(刷新成本子選中訂單的詳情)

以上是需求,接下來是解決方法:

我一開始在項目上使用了keep-alive的這種方法用來區(qū)分緩存與不緩存的頁面(網(wǎng)上找的方法)

<keep-alive>
      <router-view v-if="$route.meta.keepAlive"> </router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

這個做法其實是錯誤的优床,除非你沒有像B這樣需要有兩個狀態(tài)的頁面的時候劝赔。
然后我發(fā)現(xiàn)了$destory(),于是我換成了這樣的做法:

<keep-alive :include="['A', 'B']">
     <router-view > </router-view>
</keep-alive>

發(fā)現(xiàn)只要是$destroy()以后胆敞,這個頁面再也不能緩存了着帽。。移层。(不知道大家有沒有找到能緩存的方法启摄,反正我沒找到,找到了請告訴我一下謝謝)
然后各種beforRouteLeave各種to.fullPath各種$destroy()各種試各種@#¥%……&%¥¥#%......

然后在我腦中滋生了根據(jù):include的['a', 'b']的變化來控制是否緩存的想法幽钢,找來找去發(fā)現(xiàn)好像要用到vuex管理一下狀態(tài)歉备,但是這個項目沒必要再加上vuex,我就直接放棄了(是的匪燕,根本不想試一試)蕾羊,然后這個需求困擾了我一段時間。帽驯。
直到我突然想試一下beforRouteEnter是什么效果龟再!

然后我就

beforeRouteEnter(to, from, next) {
      next(vm => {
          // 通過 `vm` 訪問組件實例
            if (from.fullPath == '/A' && to.fullPath == '/B') {//一定是從A進(jìn)到B頁面才刷新
                vm.updataB();//updataB是本來寫在mounted里面的各種
            }
      })
}

?? ?????? ???????? ?? ?? ?? ?? ????
我突然的就成功了????
代碼如下:

//App.vue的template
<keep-alive :include="['A', 'B']">
    <router-view > </router-view>
</keep-alive>

//B.vue,溫馨提示:beforeRouteEnter與mounted同級哦尼变,不是在methods里面的利凑,很多新手不知道該往哪里放浆劲,比如以前的我
beforeRouteEnter(to, from, next) {
     next(vm => {
         // 通過 `vm` 訪問組件實例
           if (from.fullPath == '/A' && to.fullPath == '/B') {//一定是從A進(jìn)到B頁面才刷新
               vm.updataB();//updataB是本來寫在mounted里面的各種東東
           }
     })
}

好的以上,大家要是發(fā)現(xiàn)有什么奇怪的地方請多指教哀澈。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牌借,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子割按,更是在濱河造成了極大的恐慌膨报,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件适荣,死亡現(xiàn)場離奇詭異现柠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)弛矛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進(jìn)店門够吩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人丈氓,你說我怎么就攤上這事废恋。” “怎么了扒寄?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拟烫。 經(jīng)常有香客問我该编,道長,這世上最難降的妖魔是什么硕淑? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任课竣,我火速辦了婚禮,結(jié)果婚禮上置媳,老公的妹妹穿的比我還像新娘于樟。我一直安慰自己,他們只是感情好拇囊,可當(dāng)我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布迂曲。 她就那樣靜靜地躺著,像睡著了一般寥袭。 火紅的嫁衣襯著肌膚如雪路捧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天传黄,我揣著相機(jī)與錄音杰扫,去河邊找鬼。 笑死膘掰,一個胖子當(dāng)著我的面吹牛章姓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼凡伊,長吁一口氣:“原來是場噩夢啊……” “哼零渐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起窗声,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤相恃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后笨觅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拦耐,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年见剩,在試婚紗的時候發(fā)現(xiàn)自己被綠了杀糯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡苍苞,死狀恐怖固翰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情羹呵,我是刑警寧澤骂际,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站冈欢,受9級特大地震影響歉铝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凑耻,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一太示、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧香浩,春花似錦类缤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至囱晴,卻和暖如春岸裙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背速缆。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工降允, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人艺糜。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓剧董,卻偏偏與公主長得像幢尚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子翅楼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容