Vue动态组件

Vue 动态组件

通过 Vue 的 <component> 元素加一个特殊的 is 特性来实现。currentComponent 可以包括

  • 已注册组件的名字
  • 一个组件的选项对象
<component :is="currentComponent"></component>
Vue.component('capax', {
    data() {
        return {

        }
    },
    template: `<h1>Capax</h1>`
})
Vue.component('opex', {
    data() {
        return {

        }
    },
    template: `<h1>Opex</h1>`
})
var app = new Vue({
    el: '#app',
    data: {
        navs: [{
            name: 'Capax',
            id: 1
        }, {
            name: 'Opex',
            id: 2
        }],
        currentComponent: 'capax'
    },
    methods: {
        changeComponent(item) {
            this.currentComponent = item.name.toLowerCase()
        }
    }
})

在动态组件上使用 keep-alive

上面我们使用 is 特性能够动态切换组件,但是在切换的过程中,都会去创建一个新的组件实例,如果你想保存之前组件的状态,就可以使用<keep-alive></keep-alive>元素将组件包裹起来,如此组件切换就会被缓存起来,下次切换还是保存了之前的状态

<keep-alive>
    <component :is="currentComponent"></component>
</keep-alive>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文写给对Vue组件了解的基础上,如果你不明白什么是Vue的组件,可以去官网看看Vue组件基础。在Vue中有一个 ...
    刘圣凯阅读 12,674评论 0 6
  • vue与jquery相比,最大的变化就是大大减少了节点的操作,组件化更是好用到不行。往日都是用jquery做tab...
    Cherry9507阅读 7,277评论 4 3
  • 我在Vue动态组件上的坑上重复踩了两次,一模一样的两次思考过程。 我想,这个重复思考的过程并不是偶然,说明是很有必...
    嘉宝_Appian阅读 25,010评论 6 19
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,081评论 0 29
  • 在这个处女座被黑的体无完肤的时代,作为一只典型的处女座妹子不禁要来自黑一把了。 工作中,难免会与同事磕磕碰碰,叽叽...
    小嘛小二郎阅读 208评论 0 0