最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3 keep-alive用法及說明

 更新時間:2026年03月27日 08:55:07   作者:qq_45438471  
這篇文章主要介紹了Vue3 keep-alive用法及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Vue3中的keep-alive可以用于優(yōu)化組件渲染的性能。例如,在一個頁面中,有一些組件不需要每次訪問時都重新渲染,可以使用keep-alive將這些組件緩存起來,只在第一次或數(shù)據(jù)變化時渲染更新。這樣做可以減少組件的重復(fù)渲染,提高頁面的響應(yīng)速度。同時,keep-alive也可以用于處理一些需要緩存的數(shù)據(jù),例如用戶登錄狀態(tài)等。

本文主要介紹Vue3中keep-alive的使用。

屬性詳解

  • include:緩存的組件(可以為字符串,數(shù)組,以及正則表達式,只有匹配的組件會被緩存)
  • exclude:排除的組件(可以是字符串,數(shù)組,以及正則表達式,任何匹配的組件都不會被緩存)
  • max:緩存組件的最大值(類型為字符或者數(shù)字,可以控制緩存組件的個數(shù))

當組件名被include和exclude同時綁定時,exclude優(yōu)先與include

緩存組件數(shù)大于max時,刪除第一個被緩存的組件。

include和exclude傳 數(shù)組 情況居多

官網(wǎng)范例:

<template>
	<!-- 將(只)緩存組件name為a或者b的組件, 結(jié)合動態(tài)組件使用 -->
	<keep-alive include="a,b">
	  	<component :is="view"></component>
	</keep-alive>

	<!-- 組件name為c的組件不緩存(可以保留它的狀態(tài)或避免重新渲染) -->
	<keep-alive exclude="c"> 
	  	<component :is="view"></component>
	</keep-alive>
	
	<!-- 使用正則表達式,需使用v-bind -->
	<keep-alive :include="/a|b/">
	  	<component :is="view"></component>
	</keep-alive>

	<!-- 動態(tài)判斷 -->
	<keep-alive :include="includedComponents">
		<router-view></router-view>
	</keep-alive>
	
	<!-- 如果同時使用include,exclude,那么exclude優(yōu)先于include, 下面的例子只緩存a組件 -->
	<keep-alive include="a,b" exclude="b"> 
	  	<component :is="view"></component>
	</keep-alive>

	<!-- 如果緩存的組件超過了max設(shè)定的值5,那么將刪除第一個被緩存的組件 -->
	<keep-alive exclude="c" max="5"> 
	  <component></component>
	</keep-alive>
</template>

<script>
	import { ref,computed } from 'vue'
	import A from './A.vue'
	import B from './B.vue'
	import C from './C.vue'

	const view = ref('A')
	const includedComponents = computed(() => {
		return view.value
	})
</script>

動態(tài)組件要先注冊再使用,且與keep-alive一起使用時先匹配view值對應(yīng)組件名的組件再做緩存判斷

基本用法

1、組件配置使用

示例代碼:

<template>
  <div id="nav">
    <button @click='jumpHome'>home</button>
    <button @click='jumpAbout'>about</button>
  </div>
  <router-view v-slot="{ Component }">
    <keep-alive exclude='Home'>
      <component :is="Component" />
    </keep-alive>
  </router-view>
</template>

<script>
	export default {
		name: 'App'
	}
</script>

<script setup>
	import { useRouter } from 'vue-router'
	
	const router = useRouter()
	const jumpHome = () => {
		router.push({path:'/Home'})
	}
	const jumpAbout = () => {
		router.push({path:'/About'})
	}
</script>

2、路由配置使用

示例代碼:
在路由表中的meta屬性中添加自定義信息keepAlive,true為緩存,反之不緩存。

const routes = [
	{
	  path: '/home',
	  name: 'Home',
	  meta: {
	  	keepAlive: true
	  },
	  component: () => import('../views/Home.vue')
	},
	{ 
	  path: '/About',
	  name: 'About',
	  meta: {
	  	keepAlive: true
	  },
	  component: () => import('../views/About.vue')
	}
]

App.vue

<template>
	<div id="nav">
		<button @click='jumpHome'>home</button>
	    <button @click='jumpAbout'>about</button>
	</div>
  	<keep-alive>
    	<router-view v-if="route.meta.keepAlive"></router-view>
	</keep-alive>
	<router-view v-if="!route.meta.keepAlive"></router-view>
</template>

<script>
	export default {
		name: 'App'
	}
</script>

<script setup>
	import { useRouter,useRoute } from 'vue-router'
	
	const route = useRoute()
	const router = useRouter()
	const jumpHome = () => {
		router.push({path:'/Home'})
	}
	const jumpAbout = () => {
		router.push({path:'/About'})
	}
</script>

實際開發(fā)中,我們可以結(jié)合路由守衛(wèi)來實現(xiàn)需要緩存組件的緩存。

補充 App.vue:

<script setup>
	import { beforeRouteLeave } from 'vue-router'
	
	beforeRouteLeave(to, from, next) {
	    to.meta.keepAlive = true;
	    next();
 		}
	}
</script>

注意

  • 1、include和keepAlive只能使用一個,不能混合使用。
  • 2、如果要緩存,最好在keep-alive外加個div標簽。根標簽不該是router-view,不然會白屏。
  • 3、keep-alive不支持緩存孫子組件。若想緩存孫子組件,可以將整個子組件緩存,或者在子組件里再使用keepalive。
  • 4、一定要給組件加上name。使用setup語法糖的可以<script setup>和<script>一起用,請看上述代碼。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue elementUI select下拉框設(shè)置默認值(賦值)失敗的解決

    vue elementUI select下拉框設(shè)置默認值(賦值)失敗的解決

    這篇文章主要介紹了vue elementUI select下拉框設(shè)置默認值(賦值)失敗的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 使用vuex的state狀態(tài)對象的5種方式

    使用vuex的state狀態(tài)對象的5種方式

    本文給大家介紹了使用vuex的state狀態(tài)對象的5種方式,給大家貼出了我的vuex的結(jié)構(gòu),感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-04-04
  • vue下載excel文件的四種方法實例

    vue下載excel文件的四種方法實例

    最近vue項目中遇到了需求,客戶端需要實現(xiàn)以excel表格形式下載數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于vue下載excel文件的四種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • vue作用域插槽詳解、slot、v-slot、slot-scope

    vue作用域插槽詳解、slot、v-slot、slot-scope

    這篇文章主要介紹了vue作用域插槽詳解、slot、v-slot、slot-scope,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 在 vue-cli v3.0 中使用 SCSS/SASS的方法

    在 vue-cli v3.0 中使用 SCSS/SASS的方法

    關(guān)于如何在 vue-cli v3.0 中使用 SCSS/SASS,這里提供三種方案。感興趣的朋友通過本文一起學(xué)習(xí)吧
    2018-06-06
  • 卸載vue2.0并升級vue_cli3.0的實例講解

    卸載vue2.0并升級vue_cli3.0的實例講解

    在本篇文章里小編給大家整理的是關(guān)于卸載vue2.0并升級vue_cli3.0的實例內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。
    2020-02-02
  • Vite+Vue3使用MockJS的實現(xiàn)示例

    Vite+Vue3使用MockJS的實現(xiàn)示例

    寫一些純前端的項目時,自己造數(shù)據(jù)有些麻煩,于是我們可以利用mock造一些簡單的數(shù)據(jù),來滿足我們的需求,本文主要介紹了Vite+Vue3使用MockJS的實現(xiàn)示例,感興趣的可以了解一下
    2024-01-01
  • python虛擬環(huán)境 virtualenv的簡單使用

    python虛擬環(huán)境 virtualenv的簡單使用

    virtualenv是一個創(chuàng)建隔絕的Python環(huán)境的工具。這篇文章主要介紹了python虛擬環(huán)境 virtualenv的簡單使用,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • vue?cli3配置image-webpack-loader方式

    vue?cli3配置image-webpack-loader方式

    這篇文章主要介紹了vue?cli3配置image-webpack-loader方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue表單綁定實現(xiàn)多選框和下拉列表的實例

    vue表單綁定實現(xiàn)多選框和下拉列表的實例

    本篇文章主要介紹了vue表單綁定實現(xiàn)多選框和下拉列表的實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論

宁德市| 黄大仙区| 家居| 夏河县| 鱼台县| 盈江县| 定陶县| 鄄城县| 望城县| 宁津县| 东乡县| 阳西县| 汉川市| 诏安县| 克什克腾旗| 白银市| 富蕴县| 临高县| 临邑县| 绥滨县| 静宁县| 沐川县| 大余县| 深水埗区| 左贡县| 桂林市| 辽宁省| 马鞍山市| 晋州市| 宜都市| 辽源市| 重庆市| 浮山县| 确山县| 山阳县| 溆浦县| 奎屯市| 长宁区| 沾化县| 邻水| 红桥区|