vue學(xué)習(xí)記錄之動態(tài)組件淺析
動態(tài)組件
釋義:運(yùn)行時在組件之間動態(tài)切換的方法。可以將多個條件組件(使用
v-if、v-else-if、v-else切換的組件)簡化為一行代碼
看個例子 一般來講,我們會這樣實(shí)現(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)聽實(shí)例
今天小編就為大家分享一篇vuex state中的數(shù)組變化監(jiān)聽實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Vue淺析axios二次封裝與節(jié)流及防抖的實(shí)現(xiàn)
axios是基于promise的HTTP庫,可以使用在瀏覽器和node.js中,它不是vue的第三方插件,vue-axios是axios集成到Vue.js的小包裝器,可以像插件一樣安裝使用:Vue.use(VueAxios,?axios),本文給大家介紹axios的二次封裝和節(jié)流與防抖2022-08-08
vue基于viewer實(shí)現(xiàn)的圖片查看器功能
這篇文章主要介紹了vue基于viewer實(shí)現(xiàn)的圖片查看器的實(shí)例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04
vue3響應(yīng)式對象的api超全實(shí)例詳解
可以把數(shù)據(jù)變成響應(yīng)式api的方法叫做響應(yīng)式api,下面這篇文章主要給大家介紹了關(guān)于vue3響應(yīng)式對象api的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05

