vue學(xué)習(xí)記錄之動態(tài)組件淺析
動態(tài)組件
釋義:運行時在組件之間動態(tài)切換的方法。可以將多個條件組件(使用
v-if
、v-else-if
、v-else
切換的組件)簡化為一行代碼
看個例子 一般來講,我們會這樣實現(xiàn)一個tabs的切換
<template> <div id="app"> <button v-for="item in tabs" :key="item" @click="onClickTabs(item)">{{item}}</button> <Buy v-if="index==='Buy'"/> <cutUp v-else-if="index==='cutUp'"/> <Fried v-else/> </div> </template> <script> import Buy from "./components/Buy.vue"; import cutUp from "./components/cutUp.vue"; import Fried from "./components/Fried.vue"; export default { name: "app", components: { Buy, cutUp, Fried, }, created() {}, data() { return { tabs: ["Buy", "cutUp", "Fried"], index:'Buy' }; }, methods: { onClickTabs(item){ console.log(item,9999); this.index=item } }, }; </script> <style lang="scss" scoped> </style>
而動態(tài)組件形式則可以寫成
<template> <div id="app"> <button v-for="item in tabs" :key="item" @click="onClickTabs(item)">{{item}}</button> <component :is="index"></component> </div> </template> <script> import Buy from "./components/Buy.vue"; import cutUp from "./components/cutUp.vue"; import Fried from "./components/Fried.vue"; export default { name: "app", components: { Buy, cutUp, Fried, }, created() {}, data() { return { tabs: ["Buy", "cutUp", "Fried"], index:'Buy' }; }, methods: { onClickTabs(item){ console.log(item,9999); this.index=item } }, }; </script> <style lang="scss" scoped> </style>
在以上例子中,
v-if
加組件名被components
加is
替換掉了。至于其他,則沒太多分別。該傳data
傳data
,該傳狀態(tài)傳狀態(tài)。
補(bǔ)充:動態(tài)調(diào)用組件示例
<div id="app"> <button @click="changeComponent('coma')">coma</button> <button @click="changeComponent('comb')">comb</button> <button @click="changeComponent('comc')">comc</button> <component :is="com_name"></component> </div> <script> var coma = { template: '<div>aaaa</div>' } var comb = { template: '<div>bbbb</div>' } var comc = { template: '<div>cccc</div>' } let vm = new Vue({ el: '#app', data: { com_name: 'coma' }, components: { coma: coma, comb: comb, comc: comc, }, methods: { changeComponent: function(name) { this.com_name = name } } }) </script>
總結(jié)
到此這篇關(guān)于vue學(xué)習(xí)記錄之動態(tài)組件的文章就介紹到這了,更多相關(guān)vue動態(tài)組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vuex state中的數(shù)組變化監(jiān)聽實例
今天小編就為大家分享一篇vuex state中的數(shù)組變化監(jiān)聽實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11Vue淺析axios二次封裝與節(jié)流及防抖的實現(xiàn)
axios是基于promise的HTTP庫,可以使用在瀏覽器和node.js中,它不是vue的第三方插件,vue-axios是axios集成到Vue.js的小包裝器,可以像插件一樣安裝使用:Vue.use(VueAxios,?axios),本文給大家介紹axios的二次封裝和節(jié)流與防抖2022-08-08