Vue组件-动态组件

动态组件

通过使用保留的 <component> 元素,动态地绑定到它的 is 特性,可以让多个组件使用同一个挂载点,并动态切换:

 <div id="app6">
    <select v-model="currentComponent">
      <option value="home">home</option>
      <option value="post">post</option>
      <option value="about">about</option>
    </select>
    <component :is="currentComponent"></component>
  </div>
  <script>
      new Vue({
        el: '#app6',
        data: {
          currentComponent: 'home'
        },
        components: {
          home: {
            template: `<header>这是home组件</header>`
          },
          post: {
            template: `<header>这是post组件</header>`
          },
          about: {
            template: `<header>这是about组件</header>`
          }
        }
      })
</script>

也可以直接绑定到组件对象上:

var Home = {
  template: `<header>这是home组件</header>`
}
new Vue({
  el: '#app6',
  data: {
    currentComponent: Home
  }
})

保留切换出去的组件,避免重新渲染

如果把切换出去的组件保留在内存中,可以保留它的状态或避免重新渲染。为此可以添加一个 keep-alive 指令参数:

<keep-alive>
  <component :is="currentComponent">
    <!-- 非活动组件将被缓存! -->
  </component>
</keep-alive>
原文地址:https://www.cnblogs.com/ctztake/p/8808170.html