动态组件

2018-06-20  本文已影响0人  bby365

切换两个不同组件

<div id="app">
    <child-one v-if='type === "child-one"'></child-one>
    <child-two v-if='type === "child-two"'></child-two>
    <button @click='change'>change</button>
</div>
// js
Vue.component('child-one',{
    template:`
        <div>child-one</div>
    `
});
Vue.component('child-two',{
    template:`
        <div>child-two</div>
    `
});
var vm = new Vue({
    el:'#app',
    data:{
        type:'child-one'
    },
    methods:{
        change:function(){
            this.type = (this.type == 'child-one' ? 'child-two' : 'child-one')
        }
    }
});

<div id="app">
    <component :is='type'></component>
    <button @click='change'>change</button>
</div>

// js 与方法1 相同

根据:is 后面的属性值,显示相应的组件。


最后,因为频繁切换两个组件,vue每次都是要先销毁一个,在创建另一个。这里建议加上 v-once 指令。

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

v-once 官方 API 解释:
只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。

上一篇下一篇

猜你喜欢

热点阅读