uniapp树形组件怎么使用

在uniapp中如何使用树形组件?有没有现成的插件或组件可以直接使用?如果需要自己实现,大概的思路是什么?求详细的代码示例和使用教程。

2 回复

使用uni-app的树形组件,先安装uni-tree插件。在页面中引入组件,传入树形数据,配置@node-click事件处理节点点击。示例代码:

<uni-tree :data="treeData" @node-click="onNodeClick"></uni-tree>

数据格式:

treeData: [{
  text: '节点1',
  children: [{
    text: '子节点'
  }]
}]

在 UniApp 中使用树形组件,可以通过以下步骤实现:

1. 安装或引入树形组件

UniApp 本身不提供内置树形组件,需使用第三方组件库(如 uni-ui)或自定义组件。

使用 uni-ui 的树形组件:

  • 在 HBuilderX 中安装 uni-ui 插件(项目右键 → 安装插件 → 搜索 uni-ui)。
  • 在页面中引入:
    <template>
      <view>
        <uni-tree :data="treeData" @node-click="onNodeClick"></uni-tree>
      </view>
    </template>
    
    <script>
    import uniTree from '@/components/uni-tree/uni-tree.vue';
    export default {
      components: { uniTree },
      data() {
        return {
          treeData: [{
            text: '节点1',
            children: [
              { text: '子节点1-1' },
              { text: '子节点1-2' }
            ]
          }]
        };
      },
      methods: {
        onNodeClick(node) {
          console.log('点击节点:', node);
        }
      }
    };
    </script>
    

2. 自定义树形组件(简化示例)

若需高度定制,可自行实现:

<template>
  <view>
    <view v-for="node in data" :key="node.id">
      <view @click="toggleNode(node)">
        {{ node.expanded ? '▼' : '►' }} {{ node.text }}
      </view>
      <view v-if="node.expanded && node.children" style="margin-left: 20px;">
        <tree-node :data="node.children" @node-click="onNodeClick"></tree-node>
      </view>
    </view>
  </view>
</template>

<script>
export default {
  name: 'TreeNode',
  props: {
    data: Array
  },
  methods: {
    toggleNode(node) {
      node.expanded = !node.expanded;
      this.$emit('node-click', node);
    }
  }
};
</script>

3. 注意事项

  • 数据格式需包含层级关系(如 children 字段)。
  • 可通过 props 自定义字段名(如 textKeychildrenKey)。
  • 复杂操作(如懒加载)需结合接口动态加载数据。

常用配置

  • 展开/折叠:通过 expanded 字段控制。
  • 事件监听:如 node-clicknode-expand
  • 样式定制:通过 CSS 修改节点样式。

根据需求选择合适的组件,或基于示例调整逻辑。

回到顶部