Vue動態(tài)組件和keep-alive組件實例詳解
動態(tài)組件
多個組件使用同一個掛載點,并可以動態(tài)切換,這就是動態(tài)組件。
格式
<component :is="comName"></component>
注意點
- is只能是動態(tài)屬性,:is="組件注冊后的標(biāo)簽名字符串或data變量"
- 不能直接拿注冊標(biāo)簽名賦值使用
使用效果
需求: 完成一個注冊功能頁面, 2個按鈕切換, 額外封裝兩個組件:一個填寫注冊信息, 一個填寫用戶簡介信息。
目錄結(jié)構(gòu)
根組件 ├── 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內(nèi)置的組件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>
效果
小結(jié)
vue內(nèi)置component
組件, 配合is屬性, 設(shè)置要顯示的組件標(biāo)簽名字。
keep-alive組件
使用背景
組件切換會導(dǎo)致組件被頻繁銷毀和重新創(chuàng)建, 大多數(shù)情況下是有自己的意義的,但也可能會導(dǎo)致不必要的性能損耗。
解決方法
使用Vue內(nèi)置的keep-alive
組件, 可以讓包裹的組件保存在內(nèi)存中不被銷毀。
使用keep-alive組件
<keep-alive> <!-- vue內(nèi)置的組件component, 可以動態(tài)顯示組件 --> <component :is="comName"></component> </keep-alive>
使用keep-alive
組件會補(bǔ)充兩個生命周期:
- activated -激活
- deactivated -失去激活狀態(tài)
小結(jié)
keep-alive
可以提高組件的性能, 內(nèi)部包裹的標(biāo)簽不會被銷毀和重新創(chuàng)建, 觸發(fā)激活和非激活的生命周期方法。
keep-alive組件-指定緩存
keep-alive
默認(rèn)會將所有包裹的組件進(jìn)行緩存,使用include
屬性可以指定緩存組件。
語法
- 寫法1: include="組件名1,組件名2..."
- 寫法2: :include="['組件名1', '組件名2']"
<keep-alive include="name1,name2"> <!-- vue內(nèi)置的組件component, 可以動態(tài)顯示組件 --> <component :is="comName"></component> </keep-alive>
注意:
匹配首先檢查組件自身的 name 選項,如果 name 選項不可用,則匹配它的局部注冊名稱 (父組件 components 選項的鍵值)。
總結(jié)
到此這篇關(guān)于Vue動態(tài)組件和keep-alive組件的文章就介紹到這了,更多相關(guān)Vue動態(tài)組件 keep-alive組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3 setup中defineEmits與defineProps的使用案例詳解
在父組件中定義String、Number、Boolean、Array、Object、Date、Function、Symbol這些類型的數(shù)據(jù),使用defineEmits會返回一個方法,使用一個變量emits(變量名隨意)去接收,本文給大家介紹vue3 setup中defineEmits與defineProps的使用案例,感興趣的朋友一起看看吧2023-10-10關(guān)于Vue 消除Token過期時刷新頁面的重復(fù)提示問題
很多朋友在token過期時刷新頁面,頁面長時間未操作,再刷新頁面時,第一次彈出“token失效,請重新登錄!”提示,針對這個問題該怎么處理呢,下面小編給大家?guī)碓蚍治黾敖鉀Q方法,一起看看吧2021-07-07vue3.0+element Plus實現(xiàn)頁面布局側(cè)邊欄菜單路由跳轉(zhuǎn)功能
這篇文章主要介紹了vue3.0+element Plus實現(xiàn)頁面布局,側(cè)邊欄菜單路由跳轉(zhuǎn),需要的朋友可以參考下2023-07-07vue中echarts的用法及與elementui-select的協(xié)同綁定操作
這篇文章主要介紹了vue中echarts的用法及與elementui-select的協(xié)同綁定操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11