vue动态加载不同组件

在一个组件里,当遇到按不同条件加载不同子组件的情况时,是不是还在傻傻的用v-if、v-else-if、v-else、v-show来控制,其实可以用vue动态加载组件的方法来解决,简便且高效!

<template>
  <div>
    ...
      // 使用component标签来动态加载组件
      <component :is="componentName" />
    ...
  </div>
</template>

<script>
// 将所有子组件都引入
import Subgrade from './Subgrade.vue'
import SideSlope from './SideSlope.vue'
import Ditch from './Ditch.vue'
import Shoulder from './Shoulder.vue'
import Wall from './Wall.vue'

export default {
  name: '',
  props: {
    typeId: { type: String, defualt: '2' }
  },
  components: { Subgrade, SideSlope, Ditch, Shoulder, Wall },
  data() {
    return {
      // 组件名字,可以定义一个初始值
      componentName: 'SideSlope'
    }
  },
  created() {
    this.getComponentName()
  },
  methods: {
    ...
    // 根据不同条件去给组件名componentName赋值(示例)
    getComponentName() {
      switch (this.typeId) {
        case '2':
          this.componentName = 'SideSlope'
          break
        case '3':
          this.componentName = 'Subgrade'
          break
        case '4':
          this.componentName = 'Ditch'
          break
        case '5':
          this.componentName = 'Shoulder'
          break
        case '183':
          this.componentName = 'Wall'
          break
        case '185':
          this.componentName = 'Shoulder'
          break
      }
    },
    ...
  }
...
}
</script>

<style lang="scss" scoped>
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值