vue 多个组件动态加载(动态组件的使用)

需求:多个游戏卡片根据接口返的数据列表去加载

初步想法:直接使用v-if指令进行条件渲染

<div>
   <CarefulClerkAnswer v-if="item.gameName=='careful_clerk'" @viewImg="viewImg" :question="item"></CarefulClerkAnswer>
   <LittleWaiterAnswer v-if="item.gameName=='little_waiter'" @viewImg="viewImg" :question="item"></LittleWaiterAnswer>
   <FlashCardsAnswer v-if="item.gameName=='flash_cards'" @viewImg="viewImg" :question="item"></FlashCardsAnswer>
   <DaturaTrainingAnswer v-if="item.gameName=='datura_training'" @viewImg="viewImg" :question="item"></DaturaTrainingAnswer>
   <OrderingExpertAnswer v-if="item.gameName=='ordering_expert'" @viewImg="viewImg" :question="item"></OrderingExpertAnswer>
   <SuperBuyerAnswer v-if="item.gameName=='super_buyer'" @viewImg="viewImg" :question="item"></SuperBuyerAnswer>
   <AirTheClothesAnswer v-if="item.gameName=='drying_clothes'" @viewImg="viewImg" :question="item"></AirTheClothesAnswer>
   <FoodStorageTalentAnswer v-if="item.gameName=='talent_of_food_storage'" @viewImg="viewImg" :question="item"></FoodStorageTalentAnswer>
   <ClothingClassificationAnswer v-if="item.gameName=='classify_clothes'" @viewImg="viewImg" :question="item"></ClothingClassificationAnswer>
   <WashClothesAnswer v-if="item.gameName=='wash_clothes'" @viewImg="viewImg" :question="item"></WashClothesAnswer>
   <FindSizeAnswer v-if="item.gameName=='find_size'" @viewImg="viewImg" :question="item"></FindSizeAnswer>
   <DetergentLabelAnswer v-if="item.gameName=='laundry_detergent_label'" @viewImg="viewImg" :question="item"></DetergentLabelAnswer>
 </div>

但是游戏卡片类型还会继续增加,如果以后增加到上百个。。。个人觉得这种情况直接在DOM上使用v-if判断不太好。

优化:在一个多标签的界面使用 is attribute 来切换不同的组件达到动态渲染组件的目的。动态组件 & 异步组件 — Vue.js

先定义组件列表

组件传值方式跟普通组件一样,不多说了。代码简洁很多有没有,嘿嘿 

<div>
   <component :is="compentList[item.gameName]" @viewImg="viewImg" :question="item"</component>
</div>

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值