Skip to content

Props

本文中的 key 指节点的唯一标识:默认是 id,也可以通过 tree-props.id 映射到其他字段。

数据

属性类型默认值说明
dataTreeDataItem[][]树形数据
v-model / modelValueTreeKey | TreeKey[] | null-选中值。单选为一个 key 或 null,多选为 key 数组
tree-propsPartial<TreeProps>-字段映射,见下方 TreeProps
default-checked-keysTreeKey | TreeKey[][]未绑定 v-model 时的初始选中 key

TreeProps

ts
interface TreeProps {
  id: string;        // 默认 "id"
  label: string;     // 默认 "label"
  children: string;  // 默认 "children"
  disabled?: string; // 默认 "disabled"
  leaf?: string;     // 默认 "leaf"
  append?: string;   // 默认 "append"
  icon?: string;     // 默认 "icon"
}

选择

属性类型默认值说明
selectablebooleanfalse是否启用并展示选择控件
multiplebooleanfalse是否多选。false 时为单选
show-radio-iconbooleantrue单选模式是否显示单选按钮
check-strictlybooleanfalse父子选中状态是否互相独立
only-radio-leafbooleanfalse仅单选模式生效,限制为只允许选择叶子节点;multiple=true 时忽略
check-on-click-nodebooleanfalse点击任意节点行是否切换选中;开启后同时覆盖叶子和非叶子节点
check-on-click-leafbooleanfalse是否仅允许通过点击叶子节点行切换选中;可与 check-on-click-node 同时开启,后者优先覆盖全部节点
checked-disabledbooleanfalse禁用节点是否允许改变选中状态;关闭时,全选、清空、父子联动和外部更新 v-model 都不会改变它
pack-disabled-keybooleantruev-model、选择事件和查询方法的返回结果中,是否包含已选中的禁用节点;不改变节点内部或界面上的选中状态

展开

属性类型默认值说明
default-expand-allbooleanfalse初始是否展开全部
default-expanded-keysTreeKey[][]初始展开的 keys;指定任意层级节点时,其所有祖先也会展开
default-expand-parentbooleantrue是否自动展开 default-expanded-keys 中节点的所有祖先;设为 false 时仅展开指定节点
expand-checkedbooleanfalse初始是否展开已选节点的祖先链
expand-on-click-nodebooleanfalse点击整行是否展开/收起
accordionbooleanfalse展开一个节点时是否自动收起同级已展开节点;只影响运行时展开操作,不改变默认展开配置的语义
cache-expanded-keysbooleanfalse数据重建时保留运行时展开状态

过滤

属性类型默认值说明
filter-valuestring""过滤关键词,命中节点及其祖先链、后代节点保持可见
filter-method(value, node) => boolean-自定义匹配函数
highlight-filterbooleantrue仅在内置 label 中高亮关键词;使用 labeldefault 插槽后需自行实现高亮,但过滤仍正常生效

懒加载

属性类型默认值说明
load-modebooleanfalse开启懒加载模式,需配合 load-api;仅提供加载函数或仅监听事件不会启用懒加载
load-api(node) => TreeDataItem[] | Promise<...>-子节点加载函数,只有 load-mode=true 时才会在展开节点时调用
is-leaf-fn(item, node) => boolean-自定义叶子节点判断
always-first-loadbooleanfalse首次展开时即使已有静态 children 也执行加载

外观

属性类型默认值说明
theme-colorstring#007aff主题色(选中控件、高亮)
node-classstring""添加到每个节点行的自定义 class,不必依赖组件内部类名
indentnumber40每级缩进,单位 rpx
selection-placement"left" | "right""left"单选按钮或复选框的位置
empty-textstring暂无数据空数据文案
show-pathbooleanfalselabel 下方展示节点路径
path-separatorstring" / "路径分隔符

普通 class 仍按 Vue / uni-app 约定作用于组件根容器;需要定制节点行时使用 node-class

vue
<uni-tree-view
  class="department-tree"
  node-class="department-tree-node"
  :data="data"
/>

<style scoped>
:deep(.department-tree-node) {
  min-height: 44px;
}
</style>

使用 scoped 样式或小程序端时,仍需遵循对应平台的组件样式隔离规则。

虚拟渲染

属性类型默认值说明
virtualbooleanfalse开启定高虚拟渲染
virtual-heightnumber400虚拟滚动视口高度,只接受数值,单位固定为 px;不支持 rpx%vhcalc()
virtual-item-heightnumber36行高,单位 px;虚拟模式会据此固定内置节点行高
virtual-overscannumber8可视区上下额外渲染的行数

virtual-heightvirtual-item-height 会直接参与可视窗口计算,因此当前必须提供像素数值。节点较少、内容不足 virtual-height 时,组件会渲染全部节点,但仍保留固定高度视口,剩余区域留空;需要内容高度自适应时不要开启 virtual

Released under the MIT License.