vue递归组件


vue递归组件

vue支持递归组件,也就是组件自己调用自己,一般用于树形组件,来写个简单tree组件实例

  1. 父组件中
    <template>
    <div class="tree-warp">
     <my-tree :data="treeData"></my-tree>
    </div>
    </template>
    

```html
<template>
  <div class="tree-warp">
    <my-tree :data="treeData"></my-tree>
  </div>
</template>

<script>
import myTree from "@/components/myTree";

export default {
  components: { myTree },
  data() {
    return {
      treeData: [
        {
          label: "冰箱"
        },
        {
          label: "水果",
          children: [
            { label: "苹果" },
            { label: "梨子" },
            { label: "葡萄" },
            {
              label: "喜欢的水果",
              children: [
                { label: "水果1" },
                { label: "水果2" },
                { label: "水果3" }
              ]
            },
            { label: "香蕉" }
          ]
        },
        {
          label: "茶叶",
          children: [
            { label: "铁观音" },
            { label: "西湖龙井" },
            { label: "毛尖" },
            {
              label: "红茶",
              children: [
                { label: "红茶1" },
                { label: "红茶2" },
                { label: "红茶3" }
              ]
            }
          ]
        }
      ]
    };
  }
};
</script>

子组件中根据name值来进行调用

<template>
  <div class="my-tree">
    <ul>
      <li v-for="item in data" :key="item.label">
        {{ item.label }}
        <i class="iconfont el-icon-arrow-right" v-if="item.children"></i>
        <my-tree v-if="item.children" :data="item.children"></my-tree>
      </li>
    </ul> 
  </div>
</template>

<script>
export default {
  name: "myTree",
  props: {
    data:{
      type:Array,
      default:()=>[]
    }
  },
  watch:{
    data(val){
      console.log(val)
    }
  }
};
</script>

文章作者: Mr. Zhan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Mr. Zhan !
 上一篇
vue中.sync修饰符 vue中.sync修饰符
vue中.sync修饰符当一个属性传递给子组件后,子组件需要修改时,可以使用.sync修饰符 父组件中使用.sync修饰符<template> <div class="warp"> 父组件的msg值:{{msg}}
2021-01-15 Mr. Zhan
下一篇 
vue自定义组件使用v-model指令实现dialog组件的二次封装 vue自定义组件使用v-model指令实现dialog组件的二次封装
vue自定义组件使用v-model指令实现dialog组件的二次封装当某个组件是对element的dialog组件进行二次封装时,我们需要对dialog进行隐藏显示,当子组件里的dialog关闭时,需要修改父组件传入的值,尽管不是表单组件也
2021-01-13 Mr. Zhan
  目录