vue3實現樹結構

Vue3實現樹結構可以使用遞歸組件的方式,以組件樹的形式展示節點和子節點。

1. 定義樹結構節點組件


<template>
  <div>
    {{ node.name }}
    <tree-node
      v-if="node.children && node.children.length"
      v-for="child in node.children"
      :node="child"
      :key="child.id"
    ></tree-node>
  </div>
</template>
<script>
import TreeNode from './TreeNode.vue'
export default {
  name: 'TreeNode',
  components: {
    TreeNode,
  },
  props: {
    node: {
      type: Object,
      required: true,
    },
  },
}
</script>

2. 在父組件中使用遞歸組件


<template>
  <div>
    <tree-node :node="treeData"></tree-node>
  </div>
</template>
<script>
import TreeNode from './TreeNode.vue'
export default {
  name: 'TreeView',
  components: {
    TreeNode,
  },
  data() {
    return {
      treeData: {
        name: 'Root',
        children: [
          {
            name: 'Node 1',
            children: [
              { name: 'Node 1.1' },
              { name: 'Node 1.2' },
            ],
          },
          {
            name: 'Node 2',
            children: [
              { name: 'Node 2.1' },
              { name: 'Node 2.2' },
            ],
          },
        ],
      },
    }
  },
}
</script>

以上代碼中,treeData是樹結構的數據,TreeNode是樹節點組件,通過遞歸組件的方式展示節點和子節點。

3. 樣式處理

為了使樹結構更清晰,可以添加樣式進行處理:


.tree-node {
  padding-left: 20px;
  position: relative;
}
.tree-node:before {
  content: '';
  position: absolute;
  top: 10px;
  left: 0;
  width: 10px;
  height: 1px;
  background-color: #ccc;
}
.tree-node:last-child:before {
  display: none;
}
.tree-node:before:last-child {
  height: 10px;
}
.tree-node:first-child:before {
  top: 0;
  height: 10px;
}
.tree-node:last-child:before:first-child {
  height: 10px;
}

這樣就可以實現一個簡單的樹結構了。

主站蜘蛛池模板: 亚洲天堂一区二区三区四区| 欧洲精品一区二区三区在线观看| 另类免费视频一区二区在线观看| 中文字幕在线不卡一区二区| 三上悠亚精品一区二区久久| 欧美成人aaa片一区国产精品| 色窝窝无码一区二区三区成人网站| 八戒久久精品一区二区三区 | 国产一区中文字幕| 久久久精品人妻一区亚美研究所 | 鲁丝丝国产一区二区| 人妻少妇精品视频一区二区三区| 日韩精品一区二区三区国语自制 | 夜夜添无码试看一区二区三区| 中文字幕一区二区三区5566| 亚洲一区二区三区在线视频| 亚洲欧洲精品一区二区三区| 无码人妻精品一区二区三区久久| 波多野结衣一区在线| 无码一区二区三区中文字幕| 亚洲日韩AV一区二区三区四区| 亚洲午夜在线一区| 久久久久人妻一区二区三区| 蜜臀AV在线播放一区二区三区| 波多野结衣AV无码久久一区| 亚洲毛片αv无线播放一区| 人妻无码一区二区三区AV| 亚洲中文字幕无码一区二区三区| 国产激情无码一区二区| 成人精品一区二区激情| 99精品一区二区三区| 国产精品毛片a∨一区二区三区 | 国产精品久久一区二区三区| 精品一区二区三区无码免费直播| 亚洲视频在线一区二区三区| 国产一区二区视频在线播放| 在线精品视频一区二区| 免费一区二区三区| 婷婷国产成人精品一区二| 水蜜桃av无码一区二区| 在线观看日韩一区|