美文网首页
vue 组件循环引用

vue 组件循环引用

作者: newway_001 | 来源:发表于2019-07-25 16:22 被阅读0次

    Vue.component 全局注册组件时,组件循环引用可以解开。

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="UTF-8">
        <script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
    </head>
    
    <body>
    
        <div id="div">
    
            <!--用prop 获取实例data数据-->
    
            <father-comp :kkk="folder"></father-comp>
    
        </div>
        <script>
            Vue.component("child-comp", {
                template: `
                    <p>
                        <span>{{aaa.name}}</span>
                        <father-comp :kkk="aaa.ch"/>
                    </p>`,
                props: ['aaa']
            })
    
            Vue.component("father-comp", {
                template: `     
                <ul>         
                <li v-for="child in kkk">           
                <child-comp v-if="child.ch" :aaa="child"></child-comp>          
                <span v-else>{{child.name}}</span>          
                </li>       
                </ul>
                `,
                props: ['kkk']
            })
            new Vue({
                el: "#div",
                data: {
                    folder: [{
                        name: 1
                    }, {
                        name: 2,
                        ch: [{
                            name: "2-1",
                            ch: [{
                                name: "2-1-1"
                            }, {
                                name: "2-1-2"
                            }]
                        }]
                    }]
                }
            })
        </script>
    
    </body>
    
    </html>
    

    当组件不是全局注册的时候 我们使用递归组件需要经过处理才使用
    解决方案如下

    方案一
    beforeCreate: function () {
    this.$options.components.TreeFolderContents = require('./tree-folder-contents.vue').default
    }

    方案二
    推荐使用 webpack的异步组件 通过 import 引入如下
    异步组件的注册是一个箭头函数
    components: {
    TreeFolderContents: () => import('./tree-folder-contents.vue')
    }

    相关文章

      网友评论

          本文标题:vue 组件循环引用

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