zoukankan      html  css  js  c++  java
  • vue 递归组件的两种方法

    app.vue
    <template>
      <div>
        <list :data="data"></list>
        <hr/>
        <render :data="data"></render>
      </div>
    </template>
    
    <script>
    import list from "./list.vue";
    import render from "./render.vue";
    export default {
      name: "App",
      components: {
        list,
        render
      },
      data() {
        return {
          data: [
            { id: 1, name: "1" },
            {
              id: 2,
              name: "2",
              children: [
                { id: 21, name: "21" ,children:[{ id: 211, name: "211" },{ id: 212, name: "212" }]},
                { id: 22, name: "22" }
              ],
            },
            {
              id: 3,
              name: "3",
              children: [
                { id: 31, name: "31" },
                { id: 32, name: "32" },
              ],
            },
            { id: 4, name: "4" },
            { id: 5, name: "5" },
          ],
        };
      },
    };
    </script>
    
    <style lang="scss" scoped>
    </style>
    
    list.vue
    <template>
     <ul>
       <li v-for="item in data" :key="item.id">
         {{item.name}}
         <list v-if="item.children" :data="item.children"></list>
       </li>
     </ul>
    </template>
    
    <script>
      export default {
        name:'list',
        props:{
          data:{
            type:Array,
            default(){
              return []
            }
          }
        },
        
      }
    </script>
    
    <style lang="scss" scoped>
    
    </style>
    
    
    render.vue
    
    
    <script>
    export default {
      name: "Render",
      props: {
        data: {
          type: Array,
          default() {
            return [];
          },
        },
      },
      render(h) {
        let items = [];
        if (this.data.length) {
          items = this.data.map((item) => {
            if (item.children) { 
              return h("li", [
                item.name,
                h("Render", {
                  props: {
                    data: item.children,
                  },
                }
                ),
              ]
              );
            } else {
              return h("li", item.name);
            }
          });
        }
        return h("ul", items);
      },
    };
    </script>
    
    <style lang="scss" scoped>
    </style>
  • 相关阅读:
    计算机通信
    笔记0402
    笔记0414
    vb6 VS vb.net int数据类型
    jQuery好网站
    jQuery实现图片翻滚
    jQuery获取一组单选按钮的值
    Redhat安装、使用及服务器应用FAQ
    js判断变量是否赋值(存在)
    IDE 与SATA区别
  • 原文地址:https://www.cnblogs.com/7c89/p/14398211.html
Copyright © 2011-2022 走看看