# 动态组件

提示

通过本节,你将学会如何使用动态组件,减少模板的代码量,提高代码的可读性。

当页面中引入多个组件并需要动态切换组件时,绝大数情况下推荐在模板上使用 if 等指令进行逻辑判断,改变视图结构。

示例如下:

<import src="./part1.ux" name="part1"></import>
<import src="./part2.ux" name="part2"></import>
<import src="./part3.ux" name="part3"></import>
<template>
  <div>
    <part1 if="{{status === 1}}"></part1>
    <part2 elif="{{status === 2}}"></part2>
    <part3 else></part3>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        status: 1
      }
    }
  }
</script>

但当组件较多时,模板的代码量会变得很大,不利于维护。此时可以使用 动态组件 来减少模板的代码量,通过在 <component> 元素加一个特殊的 is 属性来实现,is 的值表示组件名,只需修改 is 属性即可切换组件。

示例如下:

<import src="./part1.ux" name="part1"></import>
<import src="./part2.ux" name="part2"></import>
<import src="./part3.ux" name="part3"></import>
<import src="./part4.ux" name="part4"></import>
<import src="./part5.ux" name="part5"></import>
<import src="./part6.ux" name="part6"></import>

<template>
  <div>
    <component is="{{'part' + status}}"></component>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        status: 1
      }
    }
  }
</script>