Vue之组件高级用法

1. 递归组件

组件在它的模板内可以递归地调用自己,只要给组件设置name选项即可,并且必须给一个条件来限制递归数量,否则会抛出错误。

<body>
    <div id="app">
        <child-component :count="1"></child-component>
    </div>

    <script src = "https://unpkg.com/vue/dist/vue.min.js"></script>
    <script>
        Vue.component('child-component',{
            name: 'child-component',    //设置name
            props: {
                count: {
                    type: Number,
                    default: 1
                }
            },

            template: '\
            <div class="child">\
                <child-component\
                    :count="count+1"\
                    v-if="count<3"></child-component>\
            </div>',
        });

        var app = new Vue({
            el: '#app',
        })
    </script>
</body>  

组件递归使用可以用来开发一些具有未知层级关系的独立组件,比如级联选择器和树形控件等。

2. 动态组件

Vue提供了一个特殊的元素<component>用来挂载不同的组件,使用is特性来选择要挂载的组件:

<!-- 动态组件 -->
<body>
    <div id="app">
        <component :is="currentView"></component>
        <button @click="handleChangeView('A')">Change to A</button>
        <button @click="handleChangeView('B')">Change to B</button>
        <button @click="handleChangeView('C')">Change to C</button>
    </div>

    <script src = "https://unpkg.com/vue/dist/vue.min.js"></script>
    <script>
        var app = new Vue({
            el: '#app',
            components: {
                comA: {
                    template: '<div>componentA</div>'
                },
                comB: {
                    template: '<div>componentB</div>'
                },
                comC: {
                    template: '<div>componentC</div>'
                }
            },
            data: {
                currentView: 'comA'
            },
            methods: {
                handleChangeView: function(component) {
                    this.currentView = 'com' + component;
                }
            }
        })
    </script>
</body>
执行结果

3. 内联模板 & 异步组件

参考

  1. 《Vue.js 实战》
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 7.5高级组件用法 本节会介绍组件的一些高级用法,这些用法在实际业务中不是很常用,但在独立组件开发时可能会...
    六个周阅读 462评论 0 9
  • 什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装...
    youins阅读 9,709评论 0 13
  • 1.动态组件 Vue.js 提供了一个特殊的元素<component> 用来动态地挂载不同的组件, 使用is特性来...
    笨鸟使劲飞阅读 655评论 0 0
  • 此文基于官方文档,里面部分例子有改动,加上了一些自己的理解 什么是组件? 组件(Component)是 Vue.j...
    陆志均阅读 3,955评论 5 14
  • 我喜欢边行走边欣赏路边的风景,或大气磅礴,或清新雅致,或叠翠欲滴,或红艳夺目,或苍凉寥远,或灿烂繁华,远观近看,都...
    荷塘恋雨阅读 305评论 1 4

友情链接更多精彩内容