一、动态组件

<component :is="type"></component>

<script>
Vue.component('child-one', {
template: '<div>child-one</div>'
});
Vue.component('child-two', {
template: '<div>child-two</div>'
});
。。。。。
</script>

  这段代码的核心就是 “​​:is​​​”,根据组件的 ​​name​​ 的不同,显示不同的组件。

二、问题

  在我们动态切换组件时,其背后就是框架将当前显示的组件销毁,在2创建待显示的组件,这样就会导致每次都在重复创建销毁,浪费性能。

三、解决办法

  在子组件中加上 v-once,例:

<script>
Vue.component('child-one', {
template: '<div v-once>child-one</div>'
});
Vue.component('child-two', {
template: '<div v-once>child-two</div>'
});
。。。。。
</script>

  这样,框架会将创建的组件实例缓存在内存中,而不是销毁,极大的提高性能!