花了整整一周時間,嘗試過很多種方法,終於找到了最佳的解決方案(對我來說最佳),為了祭奠逝去的一周,也為了釋放激動的情緒,現在不得不寫篇博客了。
直接上重點:
第一步:
//在APP.vue里面寫上keepalive,可以實現緩存(keep-alive是什么?查看官方文檔)
第二步:
//在router的index.js里面給需要緩存的頁面加上meta參數
第三步:
//在APP.vue里面寫,當頁面路由發生變化時,將相應頁面的滾動位置記錄下來,在頁面updated時讀取並賦值
第四步:
//因為我的想法是從首頁(index.vue)進入列表頁時刷新數據,從列表頁點擊進入詳情頁,再返回列表頁時不刷新,
所以從首頁進入列表頁時,將列表頁的isBack設置為false,
然后在列表頁的activated生命周期鈎子中判斷isBack,為false則執行加載函數,為true則使用緩存。
//index.vue中:
//list.vue中
至此,終於完美實現了效果,其實還有可優化的地方,加入需要keepalive的頁面很多的話,每一個頁面都寫相同的beforeRouteLeave和activated就沒有必要了,
但是具體怎么優化,等需要用到了再說吧。