当前位置:首页 > uni-app

uniapp 树形框

2026-02-05 23:11:46uni-app

uniapp 树形框实现方法

在 uniapp 中实现树形结构展示,可以通过以下几种方式:

使用 uni-list 和递归组件

创建一个递归组件来展示树形数据,结合 uni-list 进行样式控制:

<template>
  <view>
    <tree-node :node="treeData"></tree-node>
  </view>
</template>

<script>
export default {
  components: {
    TreeNode: {
      props: ['node'],
      template: `
        <view>
          <uni-list-item :title="node.label" @click="toggle">
            <template v-slot:footer>
              <uni-icons :type="node.expanded ? 'minus' : 'plus'"></uni-icons>
            </template>
          </uni-list-item>
          <view v-show="node.expanded" style="padding-left: 20px;">
            <tree-node 
              v-for="child in node.children" 
              :key="child.id" 
              :node="child">
            </tree-node>
          </view>
        </view>
      `,
      methods: {
        toggle() {
          this.node.expanded = !this.node.expanded
        }
      }
    }
  },
  data() {
    return {
      treeData: {
        id: 1,
        label: '根节点',
        expanded: true,
        children: [
          {
            id: 2,
            label: '子节点1',
            children: []
          },
          {
            id: 3,
            label: '子节点2',
            expanded: false,
            children: [
              {
                id: 4,
                label: '子子节点1',
                children: []
              }
            ]
          }
        ]
      }
    }
  }
}
</script>

使用第三方组件 uView UI 的 tree 组件

uView UI 提供了现成的 tree 组件,安装后可直接使用:

uniapp 树形框

<template>
  <view>
    <u-tree 
      :list="treeList" 
      :props="props"
      @node-click="nodeClick"
    ></u-tree>
  </view>
</template>

<script>
export default {
  data() {
    return {
      treeList: [
        {
          name: '根节点',
          id: 1,
          children: [
            {
              name: '子节点1',
              id: 2
            },
            {
              name: '子节点2',
              id: 3,
              children: [
                {
                  name: '子子节点1',
                  id: 4
                }
              ]
            }
          ]
        }
      ],
      props: {
        label: 'name',
        children: 'children'
      }
    }
  },
  methods: {
    nodeClick(node) {
      console.log('点击节点:', node)
    }
  }
}
</script>

使用插件市场组件

在 uni-app 插件市场搜索"树形组件",可以找到多种现成解决方案:

  1. 安装插件市场中的树形组件
  2. 按照插件文档引入组件
  3. 配置数据源和必要参数
  4. 自定义样式和事件处理

自定义实现方案

对于需要高度自定义的场景,可以完全自己实现:

uniapp 树形框

<template>
  <view>
    <view 
      v-for="item in treeData" 
      :key="item.id"
      :style="{paddingLeft: item.level * 15 + 'px'}"
    >
      <view @click="toggleExpand(item)">
        <text>{{item.expanded ? '▼' : '▶'}}</text>
        <text>{{item.label}}</text>
      </view>
      <tree-view 
        v-if="item.expanded && item.children" 
        :treeData="item.children"
      ></tree-view>
    </view>
  </view>
</template>

<script>
export default {
  name: 'TreeView',
  props: {
    treeData: Array
  },
  methods: {
    toggleExpand(item) {
      item.expanded = !item.expanded
    }
  }
}
</script>

树形框功能扩展

实现基础功能后,可以进一步添加以下特性:

  • 复选框支持:为每个节点添加 checkbox
  • 懒加载:点击节点时动态加载子节点数据
  • 拖拽排序:实现节点拖拽排序功能
  • 搜索过滤:根据输入内容过滤显示节点
  • 多选模式:支持同时选择多个节点

性能优化建议

对于大型树形结构,考虑以下优化措施:

  • 虚拟滚动:只渲染可视区域内的节点
  • 数据分片:分批加载节点数据
  • 节流处理:对展开/折叠等操作进行节流
  • 缓存机制:缓存已加载的节点数据

以上方法可根据具体需求选择或组合使用,实现符合项目要求的树形结构展示功能。

标签: uniapp
分享给朋友:

相关文章

uniapp使用npm

uniapp使用npm

uniapp中使用npm的方法 uniapp支持通过npm安装和管理第三方依赖包,以下是具体操作步骤: 安装Node.js环境 确保本地已安装Node.js(建议使用LTS版本),安装后会自动包含n…

uniapp多环境配置

uniapp多环境配置

多环境配置的必要性 在UniApp开发中,多环境配置能有效区分开发、测试、生产等不同环境的API地址、密钥等参数,避免手动修改代码导致的错误。 创建环境配置文件 在项目根目录下创建env.js或co…

uniapp安装uview

uniapp安装uview

安装uView到UniApp项目 方法一:通过npm安装(推荐) 确保项目已初始化npm,在项目根目录执行以下命令: npm install uview-ui 在main.js文件中引入并注册uV…

uniapp设置背景

uniapp设置背景

设置全局背景样式 在App.vue文件中添加全局样式,使用page选择器设置页面背景。这种方式会影响所有页面背景。 <style> page { background-color:…

引擎uniapp

引擎uniapp

uniapp 引擎概述 uniapp 是一个基于 Vue.js 的跨平台开发框架,允许开发者使用单一代码库构建多端应用(如 iOS、Android、Web、小程序等)。其核心引擎通过条件编译和运行时适…

uniapp 数据

uniapp 数据

uniapp 数据管理方法 本地存储 使用 uni.setStorageSync 和 uni.getStorageSync 进行本地数据持久化存储。适合保存用户偏好设置或小型数据。 // 存储数…