詳解vue2.0 使用動態元件實現 Tab 標籤頁切換效果(vue-cli)
阿新 • • 發佈:2019-01-06
在 vue 中,實現 Tab 切換主要有三種方式:使用動態元件,使用 vue-router 路由,使用第三方外掛。
因為這次完成的功能只是簡單切換元件,再則覺得使用路由切換需要改變地址略微麻煩,所以使用的是動態元件實現,如果是在大型應用上,可能使用 vue-router 會方便一些。
先看下最終實現的效果,結構比較簡單,頂部的三個 Tab 標籤用於切換,內容區域分別為三個子元件。
效果預覽
關鍵程式碼及分析如下:
?12345678910111213141516171819202122232425262728293031323334353637 | <template> // 每一個 tab 綁定了一個點選事件,傳入的引數對應著 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 特性動態繫結子元件 // keep-alive 將切換出去的元件保留在記憶體中 <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 用於標識當前觸發的子元件 }; }, components: { // 宣告子元件 prince, rose, fox }, methods: { toggleTab: function (tab) { this .currentTab = tab; // tab 為當前觸發標籤頁的元件名 } } } </script> |
使用動態元件實現 Tab 標籤頁切換的基本過程可以概括為:
- 在父元件中定義一個主 tab 標籤頁,用於切換,同時為每個 tab 繫結點選事件,傳入該 tab 的子元件名,最後引入並定義子元件
- 子元件中是各 tab 標籤頁的內容
- 使用 is 特性動態切換子元件,使用 kee-alive 快取
is 特性一般用於原生 HTML 元素擴充套件
舉個栗子,一般在 ul 標籤中只能巢狀 li 標籤,但是我們現在想在 ul 標籤內使用自定義元件 v-li。
?123 | < ul > < v-li ></ v-li > </ ul > |
而這樣寫肯定是不行的,這就需要用到 is 特性了。
?123 | < ul > < li is = "v-li" ></ li > </ ul > |
這也就是為什麼利用 is 特性可以實現動態切換元件的效果。
keep-alive 指令可以將切換出去的元件保留在記憶體中,可以保留它的狀態或避免重新渲染。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援指令碼之家。