uni-app - 详细实现树形结构选择器组件(支持单选 / 多选 / 可选择父级 / 弹框形式)树形控件 tree 无限级节点树,树插件完整源码,最好用的组件教程

216 篇文章 ¥9.90 ¥99.00
本文提供了一个uni-app兼容全平台(h5、小程序、app等)的树状节点选择器组件,支持单选、多选,且父级可选。代码整洁注释详尽,包含组件源码、使用示例、API及事件说明,方便快速集成到项目中,实现无限级树形结构选择功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

uniapp全端兼容(h5网页 / 支付宝微信小程序 / 安卓苹果app / nvue 等全平台)的树状(tree)节点选择器,随意动态切换 “单选” 和 “多选”,通过配置也可设置为 “父级可被选择”,除了基础功能,一切由您 DIY。流畅无 BUG,支持 uniapp v2 / v3 版本,您直接复制组件源码,按照详细示例+超详细的注释和属性配置文档。


如下图所示,扔给该组件要渲染的数据,然后监听这些节点被选择并返回数据,

在这里插入图片描述
多选:
在这里插入图片描述

组件源码

组件文件位置无所谓,最后确保正确引入即可。

### 如何在 Vue 中实现树形结构择功能 #### 使用 Element Plus 实现形表格中的复择 Element Plus 是基于 Vue 3 的组件库,提供了丰富的组件来帮助开发者快速构建复杂的界面。通过 `el-table` 和 `el-tree` 组件可以轻松实现树形结构的数据展示以及复的功能。 以下是实现形表格并带有复的具体方法: 1. **引入必要的组件** 需要使用到 `el-table` 和 `el-checkbox` 来创建表格和复。 2. **配置表格属性** 设置 `tree-props` 属性用于指定数据的子关系字段名,并启用懒加载或动态数据绑定[^2]。 ```vue <template> <div> <el-button @click="toggleAllSelection">全/反</el-button> <el-table ref="treeTableRef" :data="tableData" row-key="id" lazy :load="loadChildren" border style="width: 100%" default-expand-all show-header @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55"></el-table-column> <el-table-column prop="name" label="名称" sortable></el-table-column> <el-table-column prop="level" label="别"></el-table-column> </el-table> </div> </template> <script> export default { data() { return { tableData: [ { id: 1, name: '节点一', level: 1 }, { id: 2, pid: 1, name: '子节点一', level: 2 } ] }; }, methods: { toggleAllSelection() { this.$refs.treeTableRef.toggleAllSelection(); }, handleSelectionChange(selection) { console.log('当前中项:', selection); }, loadChildren(treeRow, resolve) { setTimeout(() => { const children = [{ id: treeRow.id * 10 + 1, pid: treeRow.id, name: `${treeRow.name}-child`, level: treeRow.level + 1 }]; resolve(children); // 动态加载子节点 }, 1000); } } }; </script> ``` 上述代码实现了以下功能: - 表格支持树形结构显示; - 支持节点与子节点之间的联动择; - 提供了一个按钮控制全局全/反操作; - 数据可以通过懒加载方式获取,适合处理大量层数据。 --- #### uni-app 插件实现无限级单选 对于 H5 或跨平台应用开发,可以择使用 uni-app 官方插件或其他第三方插件实现更灵活的树形结构交互体验。uni-app 提供了一种简单的方式去定制化树形控件,如下所示[^3]: ##### 选择器组件实例 该组件允许用户以窗的形式打开形菜单进行择,支持单选种模式。 ```html <!-- TreeSelector.vue --> <view class="selector-container"> <button @click="openTreePopup">打开选择器</button> <picker-view v-if="showPicker" mode="multiSelector" @cancel="closeTreePopup" @confirm="onConfirm"> <tree-node v-for="(node,index) in treeNodes" :key="index" :node="node"/> </picker-view> </view> <script> import TreeNode from './TreeNode'; export default { components: { TreeNode }, data() { return { showPicker: false, treeNodes: [ { id: 1, name: '根节点A' }, { id: 2, parent_id: 1, name: '子节点B' } ], selectedNodeIds: [] }; }, methods: { openTreePopup() { this.showPicker = true; }, closeTreePopup() { this.showPicker = false; }, onConfirm(selectedItems) { this.selectedNodeIds = selectedItems.map(item => item.id); console.log(this.selectedNodeIds); this.closeTreePopup(); } } } </script> ``` 此示例展示了如何利用自定义组件渲染树形结构,并提供简单的事件回调机制完成最终确认逻辑。 --- #### 自定义样式调整 无论是采用 Element Plus 还是 uni-app 方案,都可以进一步优化视觉效果。例如设置动画过渡让页面更加流畅自然[^4]: ```css @keyframes treeTableShow { 0% { opacity: 0; transform: scale(0.9); } 100% { opacity: 1; transform: scale(1); } } .el-table__row { animation: treeTableShow .8s ease-in-out; } ``` 以上 CSS 片段为每一行新增了淡入放大效果提升用户体验。 --- ### 总结 综上所述,在 Vue 开发环境中可以根据实际需求用不同架下的工具包或者自行封装通用型组件满足业务场景要求。如果追求高效便捷则推荐直接运用成熟的前端UI库如Element Plus;而针对移动端适配性强的应用,则优先考虑uni-app内置能力扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王二红

请作者喝杯咖啡 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值