美文网首页
动态组件

动态组件

作者: bby365 | 来源:发表于2018-06-20 16:00 被阅读0次

切换两个不同组件

  • 方法1
    使用 v-if 和按钮点击切换
<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')
        }
    }
});

  • 方法2
    使用动态组件 :is 和按钮切换
<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 解释:
只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。

相关文章

网友评论

      本文标题:动态组件

      本文链接:https://www.haomeiwen.com/subject/orsxyftx.html