首先看項目需求,如果是需要全部組件緩存,每次進去只刷新數據,只需要把路由meta的keepAlive設為true即可。
而在緩存周期中activated()鈎子函數,只會更新數據,不會刷新頁面。
但是很多項目的需求並不是這樣,是想要動態設置組件是否緩存,換句話說,需要緩存組件的時候緩存,不需要的時候去掉緩存。
網上很多介紹都是用上面圖片里面的方法,但是本人親自試驗過,這個方法是不行的。
那么問題來了,怎么辦呢?
看過官網介紹的同學肯定見過keep-alive include和exclude,兩個的意思剛好相反,include 名稱匹配的組件會被緩存,exclude 名稱匹配的組件不被緩存。
我在項目中用的是include,如果對exclude 感興趣可自行了解,這就不做詳細的介紹。
cachedViews 則放在store中,如果有需要緩存的組件,push進cachedViews ,不需要緩存的組件在cachedViews 刪除即可。
最后加一個watch 監聽,每次路由變化的時候從緩存里取cachedViews
最后提兩點注意:
一、cachedViews 一定要放在store 中,並有對應的方法,可以操控增加或者刪除組件的緩存。
二、組件緩存的name,即每個vue組件里面的name。