最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

vue怎樣使用緩存

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 19:52:51
文檔

vue怎樣使用緩存

vue怎樣使用緩存:這次給大家?guī)?lái)vue怎樣使用緩存,vue使用緩存的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。keep-alive 簡(jiǎn)介keep-alive 是 Vue 內(nèi)置的一個(gè)組件,可以使被包含的組件保留狀態(tài),或避免重新渲染。用法也很簡(jiǎn)單:<keep-alive> <
推薦度:
導(dǎo)讀vue怎樣使用緩存:這次給大家?guī)?lái)vue怎樣使用緩存,vue使用緩存的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。keep-alive 簡(jiǎn)介keep-alive 是 Vue 內(nèi)置的一個(gè)組件,可以使被包含的組件保留狀態(tài),或避免重新渲染。用法也很簡(jiǎn)單:<keep-alive> <

這次給大家?guī)?lái)vue怎樣使用緩存,vue使用緩存的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。

keep-alive 簡(jiǎn)介

keep-alive 是 Vue 內(nèi)置的一個(gè)組件,可以使被包含的組件保留狀態(tài),或避免重新渲染。

用法也很簡(jiǎn)單:

<keep-alive>
 <component>
 <!-- 該組件將被緩存! -->
 </component>
</keep-alive>

props

include - 字符串或正則表達(dá),只有匹配的組件會(huì)被緩存
exclude - 字符串或正則表達(dá)式,任何匹配的組件都不會(huì)被緩存

// 組件 a
export default {
 name: 'a',
 data () {
 return {}
 }
}
<keep-alive include="a">
 <component>
 <!-- name 為 a 的組件將被緩存! -->
 </component>
</keep-alive>可以保留它的狀態(tài)或避免重新渲染
<keep-alive exclude="a">
 <component>
 <!-- 除了 name 為 a 的組件都將被緩存! -->
 </component>
</keep-alive>可以保留它的狀態(tài)或避免重新渲染
<keep-alive include="test-keep-alive">
 <!-- 將緩存name為test-keep-alive的組件 -->
 <component></component>
</keep-alive>
<keep-alive include="a,b">
 <!-- 將緩存name為a或者b的組件,結(jié)合動(dòng)態(tài)組件使用 -->
 <component :is="view"></component>
</keep-alive>
<!-- 使用正則表達(dá)式,需使用v-bind -->
<keep-alive :include="/a|b/">
 <component :is="view"></component>
</keep-alive>
<!-- 動(dòng)態(tài)判斷 -->
<keep-alive :include="includedComponents">
 <router-view></router-view>
</keep-alive>
<keep-alive exclude="test-keep-alive">
 <!-- 將不緩存name為test-keep-alive的組件 -->
 <component></component>
</keep-alive>

遇見(jiàn) vue-router

router-view 也是一個(gè)組件,如果直接被包在 keep-alive 里面,所有路徑匹配到的視圖組件都會(huì)被緩存:

<keep-alive>
 <router-view>
 <!-- 所有路徑匹配到的視圖組件都會(huì)被緩存! -->
 </router-view>
</keep-alive>

然而產(chǎn)品汪總是要改需求,攔都攔不住...

問(wèn)題

如果只想 router-view 里面某個(gè)組件被緩存,怎么辦?

使用 include/exclude
增加 router.meta 屬性
使用 include/exclude

// 組件 a
export default {
 name: 'a',
 data () {
 return {}
 }
}
<keep-alive include="a">
 <router-view>
 <!-- 只有路徑匹配到的視圖 a 組件會(huì)被緩存! -->
 </router-view>
</keep-alive>

exclude 例子類似。

缺點(diǎn):需要知道組件的 name,項(xiàng)目復(fù)雜的時(shí)候不是很好的選擇

增加 router.meta 屬性

// routes 配置
export default [
 {
 path: '/',
 name: 'home',
 component: Home,
 meta: {
 keepAlive: true // 需要被緩存
 }
 }, {
 path: '/:id',
 name: 'edit',
 component: Edit,
 meta: {
 keepAlive: false // 不需要被緩存
 }
 }
]
<keep-alive>
 <router-view v-if="$route.meta.keepAlive">
 <!-- 這里是會(huì)被緩存的視圖組件,比如 Home! -->
 </router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive">
 <!-- 這里是不被緩存的視圖組件,比如 Edit! -->
</router-view>

優(yōu)點(diǎn):不需要例舉出需要被緩存組件名稱

【加鹽】使用 router.meta 拓展

假設(shè)這里有 3 個(gè)路由: A、B、C。

需求:

默認(rèn)顯示 A
B 跳到 A,A 不刷新
C 跳到 A,A 刷新
實(shí)現(xiàn)方式

在 A 路由里面設(shè)置 meta 屬性:

{
 path: '/',
 name: 'A',
 component: A,
 meta: {
 keepAlive: true // 需要被緩存
 }
}

在 B 組件里面設(shè)置 beforeRouteLeave:

export default {
 data() {
 return {};
 },
 methods: {},
 beforeRouteLeave(to, from, next) {
 // 設(shè)置下一個(gè)路由的 meta
 to.meta.keepAlive = true; // 讓 A 緩存,即不刷新
 next();
 }
};

在 C 組件里面設(shè)置 beforeRouteLeave:

export default {
 data() {
 return {};
 },
 methods: {},
 beforeRouteLeave(to, from, next) {
 // 設(shè)置下一個(gè)路由的 meta
 to.meta.keepAlive = false; // 讓 A 不緩存,即刷新
 next();
 }
};

這樣便能實(shí)現(xiàn) B 回到 A,A 不刷新;而 C 回到 A 則刷新。

總結(jié)

路由大法不錯(cuò),不需要關(guān)心哪個(gè)頁(yè)面跳轉(zhuǎn)過(guò)來(lái)的,只要 router.go(-1) 就能回去,不需要額外參數(shù)。

然而在非單頁(yè)應(yīng)用的時(shí)候,keep-alive 并不能有效的緩存了= =

相信看了本文案例你已經(jīng)掌握了方法,更多精彩請(qǐng)關(guān)注Gxl網(wǎng)其它相關(guān)文章!

推薦閱讀:

vue新手入門須知

Angular父組件調(diào)用子組件步奏詳解

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

vue怎樣使用緩存

vue怎樣使用緩存:這次給大家?guī)?lái)vue怎樣使用緩存,vue使用緩存的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。keep-alive 簡(jiǎn)介keep-alive 是 Vue 內(nèi)置的一個(gè)組件,可以使被包含的組件保留狀態(tài),或避免重新渲染。用法也很簡(jiǎn)單:<keep-alive> <
推薦度:
標(biāo)簽: 怎么使用 使用 如何
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top