Vue動態(tài)組件和keep-alive組件實例詳解
動態(tài)組件
多個組件使用同一個掛載點,并可以動態(tài)切換,這就是動態(tài)組件。
格式
<component :is="comName"></component>
注意點
- is只能是動態(tài)屬性,:is="組件注冊后的標簽名字符串或data變量"
- 不能直接拿注冊標簽名賦值使用
使用效果
需求: 完成一個注冊功能頁面, 2個按鈕切換, 額外封裝兩個組件:一個填寫注冊信息, 一個填寫用戶簡介信息。
目錄結構
根組件
├── App.vue
└── components
├── UserName.vue # 用戶名和密碼輸入框
└── UserInfo.vue # 人生格言和自我介紹框操作
UserName.vue
<template>
<div>
<h2>UserName</h2>
<p>用戶名:<input /> </p>
<p>密碼:<input /> </p>
</div>
</template>
<script>
export default {
}
</script>UserInfo.vue
<template>
<div>
<h2>UserInfo.vue</h2>
<p>人生格言:<input /> </p>
<p>自我介紹:<textarea /> </p>
</div>
</template>
<script>
export default {
}
</script>父組件APP.vue
<template>
<div>
<button @click="comName = 'UserName'">賬號密碼填寫</button>
<button @click="comName = 'UserInfo'">個人信息填寫</button>
<p>下面顯示注冊組件:</p>
<div style="border: 1px solid red">
<!-- vue內置的組件component, 可以動態(tài)顯示組件 -->
<component :is="comName"></component>
</div>
</div>
</template>
<script>
import UserName from "./UserName";
import UserInfo from "./UserInfo";
export default {
data() {
return {
comName: "UserName",
};
},
components: {
UserName,
UserInfo,
},
};
</script>效果

小結
vue內置component組件, 配合is屬性, 設置要顯示的組件標簽名字。
keep-alive組件
使用背景
組件切換會導致組件被頻繁銷毀和重新創(chuàng)建, 大多數(shù)情況下是有自己的意義的,但也可能會導致不必要的性能損耗。
解決方法
使用Vue內置的keep-alive組件, 可以讓包裹的組件保存在內存中不被銷毀。
使用keep-alive組件
<keep-alive>
<!-- vue內置的組件component, 可以動態(tài)顯示組件 -->
<component :is="comName"></component>
</keep-alive>使用keep-alive組件會補充兩個生命周期:
- activated -激活
- deactivated -失去激活狀態(tài)
小結
keep-alive可以提高組件的性能, 內部包裹的標簽不會被銷毀和重新創(chuàng)建, 觸發(fā)激活和非激活的生命周期方法。
keep-alive組件-指定緩存
keep-alive默認會將所有包裹的組件進行緩存,使用include屬性可以指定緩存組件。
語法
- 寫法1: include="組件名1,組件名2..."
- 寫法2: :include="['組件名1', '組件名2']"
<keep-alive include="name1,name2">
<!-- vue內置的組件component, 可以動態(tài)顯示組件 -->
<component :is="comName"></component>
</keep-alive>注意:
匹配首先檢查組件自身的 name 選項,如果 name 選項不可用,則匹配它的局部注冊名稱 (父組件 components 選項的鍵值)。
總結
到此這篇關于Vue動態(tài)組件和keep-alive組件的文章就介紹到這了,更多相關Vue動態(tài)組件 keep-alive組件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
關于Vue3中element-plus的el-dialog對話框無法顯示的問題及解決方法
最近今天在寫一個停車場管理系統(tǒng)的項目時,在用vue3寫前端時,在前端模板選擇上,我一時腦抽,突然決定放棄SpringBoot,選擇了以前幾乎很少用的element-plus,然后果不其然,錯誤連連,下面給大家分享dialog對話框無法顯示的原因,感興趣的朋友一起看看吧2023-10-10
vue前端實現(xiàn)dhtmlxgantt甘特圖代碼示例(個人需求)
這篇文章主要介紹了如何使用dhtmlx-gantt和chinese-days插件在項目中實現(xiàn)節(jié)假日置灰顯示的功能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-03-03
vite.config.ts如何加載.env環(huán)境變量
這篇文章主要介紹了vite.config.ts加載.env環(huán)境變量方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
解決Element-ui radio單選框label布爾/數(shù)值的一個坑
這篇文章主要介紹了解決Element-ui radio單選框label布爾/數(shù)值的一個坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04
基于cropper.js封裝vue實現(xiàn)在線圖片裁剪組件功能
這篇文章主要介紹了基于cropper.js封裝vue實現(xiàn)在線圖片裁剪組件功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-03-03

