One UI

OneTree

节点行是 div[tabindex],容器使用 role=tree,展开的子树使用 role=group;aria-expanded 与 aria-selected、aria-level、aria-posinset、aria-setsize 表达层级与状态。

  • 工程
    • 前端
查看代码收起代码
import { OneTree, type OneTreeSelectEvent } from '@geektech/one';

const tree = new OneTree({
  defaultExpanded: ['engineering'],
  data: [
    {
      value: 'design',
      label: '设计',
      children: [
        { value: 'visual', label: '视觉' },
        { value: 'interaction', label: '交互' },
      ],
    },
    {
      value: 'engineering',
      label: '工程',
      children: [
        { value: 'frontend', label: '前端' },
        { value: 'quality', label: '质量' },
      ],
    },
  ],
});
tree.on('select', (payload) => {
  const event = payload as OneTreeSelectEvent;
  console.log(event.value);
});

勾选级联

checkable 开启复选框;cascade 默认开启,勾选父节点会同步所有后代,父节点随子节点状态呈现“勾选/半选/未选”。

键盘导航

方向键在可见节点间移动焦点,ArrowRight 展开或进入首个子节点,ArrowLeft 收起或回到父节点,Home/End 跳转首尾,Space/Enter 触发选中或勾选。

API

OneTree 属性与事件
名称签名说明
datadata?: readonly OneTreeNode[]树节点:value、label、disabled 与可选 children。
defaultExpandeddefaultExpanded?: readonly string[]非受控初始展开节点。
expandedexpanded?: readonly string[]受控展开节点。
defaultSelecteddefaultSelected?: string | null非受控初始选中节点。
selectedselected?: string | null受控选中节点。
selectableselectable?: boolean是否允许选中,默认 true。
defaultCheckeddefaultChecked?: readonly string[]非受控初始勾选节点。
checkedchecked?: readonly string[]受控勾选节点。
checkablecheckable?: boolean显示复选框,默认 false。
cascadecascade?: boolean勾选级联到后代与祖先,默认 true。
ariaLabelariaLabel?: string树容器的可访问名称。
expand(event: OneTreeExpandEvent) => void展开状态变化时发出 value: string[] 与 originalEvent。
select(event: OneTreeSelectEvent) => void选中变化时发出 value: string | null 与 originalEvent。
check(event: OneTreeCheckEvent) => void勾选变化时发出完全勾选的 value: string[] 与 originalEvent。