詳解vue2.0 使用動(dòng)態(tài)組件實(shí)現(xiàn) Tab 標(biāo)簽頁(yè)切換效果(vue-cli)
在 vue 中,實(shí)現(xiàn) Tab 切換主要有三種方式:使用動(dòng)態(tài)組件,使用 vue-router 路由,使用第三方插件。
因?yàn)檫@次完成的功能只是簡(jiǎn)單切換組件,再則覺(jué)得使用路由切換需要改變地址略微麻煩,所以使用的是動(dòng)態(tài)組件實(shí)現(xiàn),如果是在大型應(yīng)用上,可能使用 vue-router 會(huì)方便一些。
先看下最終實(shí)現(xiàn)的效果,結(jié)構(gòu)比較簡(jiǎn)單,頂部的三個(gè) Tab 標(biāo)簽用于切換,內(nèi)容區(qū)域分別為三個(gè)子組件。
效果預(yù)覽
關(guān)鍵代碼及分析如下:
<template> // 每一個(gè) tab 綁定了一個(gè)點(diǎn)擊事件,傳入的參數(shù)對(duì)應(yīng)著 tab 下的組件名 <div class="tabs"> <div class="tab" @click="toggleTab('prince')"><a>小王子</a></div> <div class="tab" @click="toggleTab('rose')"><a>小玫瑰</a></div> <div class="tab" @click="toggleTab('fox')"><a>小狐貍</a></div> </div> // 子組件,顯示不同的 tab // is 特性動(dòng)態(tài)綁定子組件 // keep-alive 將切換出去的組件保留在內(nèi)存中 <prince :is="currentTab" keep-alive></prince> </template> <script> // 引入子組件 import prince from './components/prince'; import rose from './components/rose'; import fox from './components/fox'; export default { name: 'app', data () { return { currentTab: 'prince' // currentTab 用于標(biāo)識(shí)當(dāng)前觸發(fā)的子組件 }; }, components: { // 聲明子組件 prince, rose, fox }, methods: { toggleTab: function(tab) { this.currentTab = tab; // tab 為當(dāng)前觸發(fā)標(biāo)簽頁(yè)的組件名 } } } </script>
使用動(dòng)態(tài)組件實(shí)現(xiàn) Tab 標(biāo)簽頁(yè)切換的基本過(guò)程可以概括為:
- 在父組件中定義一個(gè)主 tab 標(biāo)簽頁(yè),用于切換,同時(shí)為每個(gè) tab 綁定點(diǎn)擊事件,傳入該 tab 的子組件名,最后引入并定義子組件
- 子組件中是各 tab 標(biāo)簽頁(yè)的內(nèi)容
- 使用 is 特性動(dòng)態(tài)切換子組件,使用 kee-alive 緩存
is 特性一般用于原生 HTML 元素?cái)U(kuò)展
舉個(gè)栗子,一般在 ul 標(biāo)簽中只能嵌套 li 標(biāo)簽,但是我們現(xiàn)在想在 ul 標(biāo)簽內(nèi)使用自定義組件 v-li。
<ul> <v-li></v-li> </ul>
而這樣寫(xiě)肯定是不行的,這就需要用到 is 特性了。
<ul> <li is="v-li"></li> </ul>
這也就是為什么利用 is 特性可以實(shí)現(xiàn)動(dòng)態(tài)切換組件的效果。
keep-alive 指令可以將切換出去的組件保留在內(nèi)存中,可以保留它的狀態(tài)或避免重新渲染。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue實(shí)現(xiàn)app頁(yè)面切換動(dòng)畫(huà)效果實(shí)例
本篇文章主要介紹了vue實(shí)現(xiàn)app頁(yè)面切換動(dòng)畫(huà)效果實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Vue中在新窗口打開(kāi)頁(yè)面及Vue-router的使用
這篇文章主要介紹了Vue中在新窗口打開(kāi)頁(yè)面 及 Vue-router的使用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06vue雙向數(shù)據(jù)綁定指令v-model的用法
這篇文章主要介紹了vue雙向數(shù)據(jù)綁定指令v-model的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08解決echarts 一條柱狀圖顯示兩個(gè)值,類(lèi)似進(jìn)度條的問(wèn)題
這篇文章主要介紹了解決echarts 一條柱狀圖顯示兩個(gè)值,類(lèi)似進(jìn)度條的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07vue實(shí)現(xiàn)樣式之間的切換及vue動(dòng)態(tài)樣式的實(shí)現(xiàn)方法
這篇文章主要介紹了vue中如何實(shí)現(xiàn)樣式之間的切換及vue動(dòng)態(tài)樣式的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-12-12使用Bootstrap + Vue.js實(shí)現(xiàn)表格的動(dòng)態(tài)展示、新增和刪除功能
這篇文章主要介紹了使用Bootstrap + Vue.js實(shí)現(xiàn)表格的動(dòng)態(tài)展示、新增和刪除功能,需要的朋友可以參考下2017-11-11vue3+vite實(shí)現(xiàn)在線預(yù)覽pdf功能
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)vue3和vite實(shí)現(xiàn)在線預(yù)覽pdf功能,文中的示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,感興趣的小伙伴可以學(xué)習(xí)一下2023-10-10Vue2.0實(shí)現(xiàn)簡(jiǎn)單分頁(yè)及跳轉(zhuǎn)效果
這篇文章主要為大家詳細(xì)介紹了Vue2.0實(shí)現(xiàn)簡(jiǎn)單數(shù)據(jù)分頁(yè),及頁(yè)數(shù)的跳轉(zhuǎn)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07