动态组件
通过使用保留(自定义组件的时候名称不能写这个保留的名称)的 <component> 元素,动态地绑定到它的 is 特性,我们让多个组件可以使用同一个挂载点(挂载点就是component元素的位置),并动态切换。
语法:
<component :is="xxxxx"> </component>
keep-alive的作用:
keep-alive可以将已经切换出去的非活跃组件保留在内存中。如果把切换出去的组件保留在内存中,可以保留它的状态,避免重新渲染。
实例:
<div id="app"> <div> <button @click="changeCmp('cmp1')">切换到组件1</button> <button @click="changeCmp('cmp2')">切换到组件2</button> <button @click="changeCmp('cmp3')">切换到组件3</button> </div> <!-- 避免重新渲染 --> <keep-alive> <!-- 切换:只要改变了is属性绑定的值,显示的组件就发生了变化 --> <component :is="current"></component> </keep-alive> </div> <script src="./js/vue.js"></script> <script> // 定义三个组件 var cmp1 = { template: `<div>第一组件的内容</div>`, created() { console.log('1从头开始'); }, }; var cmp2 = { template: `<div>第二组件的内容</div>`, created() { console.log('2从头开始'); }, }; var cmp3 = { template: `<div>第三组件的内容</div>`, created() { console.log('3从头开始'); }, }; new Vue({ el: "#app", data: { // 默认显示第一个组件 current: 'cmp1', }, components: { cmp1, cmp2, cmp3, }, methods: { changeCmp: function (cmp_name) { this.current = cmp_name; }, }, }); </script>
Comments | NOTHING