vue動態(tài)組件之:is在組件中的使用場景
vue動態(tài)組件之:is在組件中的使用
使用場景:
有些場景會需要在兩個組件間來回切換,比如 Tab 界面:
我們可以通過 Vue 的<component>
元素和特殊的 is
attribute 實現(xiàn)的:如
<!-- currentTab 改變時組件也改變 --> <component :is="currentTab"></component>
在上面的例子中,被傳給:is
的值可以是以下幾種:
- 被注冊的組件名
- 導(dǎo)入的組件對象
你也可以使用is
attribute 來創(chuàng)建一般的 HTML 元素。
當(dāng)使用 <component :is="...">
來在多個組件間作切換時,被切換掉的組件會被卸載。我們可以通過 <KeepAlive>
組件
強制被切換掉的組件仍然保持“存活”的狀態(tài)。
vue3中的:is 動態(tài)組件
1、注意事項
1、在Vue2 的時候is是通過組件名稱切換的,在Vue3 setup是通過組件實例切換的
2、如果直接把組件實例放到reactive中代理,vue會發(fā)出警告。告知我們可以通過shallowRef 或者 markRaw 跳過proxy 代理。因為組件實例進行響應(yīng)式代理毫無意義,且浪費性能
2、:is 動態(tài)組件使用
子組件通過defineProps接受傳參
<template> <div class="content"> <div class="tabs" v-for="item in tabArr" :key="item.name" @click="tabChange(item.comName)"> {{ item.name }} </div> </div> <component :is="currentCom"></component> </template> <script setup lang="ts"> import { ref, reactive, markRaw } from 'vue' import A from './A.vue' import B from './B.vue' import C from './C.vue' type Tab = { name: string, comName: any } // 從復(fù)雜數(shù)據(jù)類型中取出自己想要的幾個屬性 type Com = Pick<Tab, 'comName'> const tabArr = reactive<Tab[]>([ { name: 'A組件', comName: markRaw(A) }, { name: 'B組件', comName: markRaw(B) }, { name: 'C組件', comName: markRaw(C) }, ]) const currentCom = ref<Com>(tabArr[0].comName) const tabChange = (item: Com) => { currentCom.value = item } </script> <style> .content { display: flex; padding: 20px; height: 40px; width: 100vw; background: #f1f1f1; } .tabs { width: 100px; height: 40px; background: #ffffff; margin-right: 5px; border: 1px solid #000; } </style>
到此這篇關(guān)于vue - 動態(tài)組件(:is在組件中的使用)的文章就介紹到這了,更多相關(guān)vue動態(tài)組件:is內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vite?vue3多頁面入口打包以及部署踩坑實戰(zhàn)
因為我們公司的項目是多頁面應(yīng)用,不同于傳統(tǒng)單頁面應(yīng)用,一個包就可以了,下面這篇文章主要給大家介紹了關(guān)于Vite?vue3多頁面入口打包以及部署踩坑的相關(guān)資料,需要的朋友可以參考下2022-05-05nginx+vue.js實現(xiàn)前后端分離的示例代碼
這篇文章主要介紹了nginx+vue.js實現(xiàn)前后端分離的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02vue改變數(shù)據(jù)后數(shù)據(jù)變化頁面不刷新的解決方法
這篇文章主要給大家介紹了關(guān)于vue改變數(shù)據(jù)后數(shù)據(jù)變化頁面不刷新的解決方法,vue比較常見的坑就是數(shù)據(jù)(后臺返回)更新了,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07Vue中使用highlight.js實現(xiàn)代碼高亮顯示以及點擊復(fù)制
本文主要介紹了Vue中使用highlight.js實現(xiàn)代碼高亮顯示以及點擊復(fù)制,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01vue3實現(xiàn)鼠標(biāo)右鍵顯示菜單,點擊其他地方消失問題
這篇文章主要介紹了vue3實現(xiàn)鼠標(biāo)右鍵顯示菜單,點擊其他地方消失問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04webpack+vue-cil 中proxyTable配置接口地址代理操作
這篇文章主要介紹了webpack+vue-cil 中proxyTable配置接口地址代理操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07vue3 setup點擊跳轉(zhuǎn)頁面的實現(xiàn)示例
本文主要介紹了vue3 setup點擊跳轉(zhuǎn)頁面的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10