CheckTreePicker 树形多项选择器

多项选择器中支持树形结构,用于复杂的数据结构进行多选。

获取组件

import { CheckTreePicker } from 'rsuite';

演示

默认

外观

尺寸

级联选择

cascade 属性可以设置 CheckTreePicker 在选择的时候是否可考虑子父级的级联关系,默认为 true

位置

禁用与只读

自定义选项

异步

自定义页脚

可访问性

ARIA 属性

combobox

  • CheckTreePicker 组件的 role 属性为 combobox
  • aria-activedescendant 属性来指示焦点选项的 ID。
  • aria-haspopup="tree" 属性来指示 combobox 有一个弹出的树形列表框。
  • aria-controls 属性来指示树形列表框元素的 ID。
  • 当设置了 label, aria-labelledby 属性被添加到 combobox 元素和 tree 元素上,并将值设置为 labelid 属性值。

tree

  • CheckTree 组件的 role 属性为 tree
  • CheckTree 有 aria-multiselectable=true 属性来指示树形列表框是多选的。

treeitem

  • CheckTree 节点的 role 属性为 treeitem
  • aria-expanded 属性来指示树形列表框是否打开。
  • aria-checked 属性来指示树节点是否被选中。
  • aria-level 属性来指示树节点的层级。
  • aria-disabled 属性来指示树节点是否被禁用。

键盘交互

  • - 移动焦点到下一个树节点。
  • - 移动焦点到上一个树节点。
  • - 展开当前树节点。
  • - 收起当前树节点。
  • Enter - 选择聚焦的树节点。
  • Esc - 关闭树形列表框。

Props

<CheckTreePicker>

属性名称 类型 (默认值) 描述
appearance 'default' | 'subtle' ('default') 设置组件外观
block boolean 是否以块级元素显示
caretAs ElementType 自定义右侧箭头图标的组件
cascade boolean 是否启用级联选择
childrenKey string ('children') 设置树节点的子节点在 data 中的 key
cleanable boolean (true) 是否可以清除
container HTMLElement | (() => HTMLElement) 设置渲染的容器
countable boolean (true) 是否显示已选节点的计数
data * TreeNode[] 渲染树的数据
defaultExpandAll boolean 默认展开所有节点
defaultExpandItemValues string [] 设置默认展开节点的值
defaultValue string[] 默认选中的值
disabled boolean 是否禁用组件
disabledItemValues string[] 禁用树节点
expandItemValues string [] 设置展开节点的值(受控)
getChildren (item: TreeNode) => Promise<TreeNode> 异步加载节点的子节点数据
height number ⚠️[已弃用] 使用 treeHeight 代替
labelKey string ('label') 设置树节点显示内容在 data 中的 key
listProps ListProps 虚拟化长列表的相关属性
loading boolean (false) 是否显示一个加载中状态指示器
locale PickerLocaleType 本地化配置
menuClassName string ⚠️[已弃用] 使用 popupClassName 代替
menuStyle CSSProperties ⚠️[已弃用] 使用 popupStyle 代替
onChange (values:string[]) => void 值改变的触发回调
onClean (event) => void 清空值时触发回调
onClose () => void 关闭的回调函数
onEnter () => void 显示前动画过渡的回调
onEntered () => void 显示后动画过渡的回调
onEntering () => void 显示中动画过渡的回调
onExit () => void 退出前动画过渡的回调
onExited () => void 退出后动画过渡的回调
onExiting () => void 退出中动画过渡的回调
onExpand (expandItemValues: string[], item: TreeNode, concat:(data, children) => Array) => void 树节点展开时的回调
onOpen () => void 打开弹出层的回调
onSearch (searchKeyword:string, event)=void 搜索框值改变的回调
onSelect (item:TreeNode,value:string, event) => void 选择树节点后的回调
open boolean 是否打开弹出层
placeholder ReactNode ('Select') 没有值时的占位内容
placement Placement ('bottomStart') 弹出层打开位置
popupClassName string 设置弹出层的 CSS 类名
popupStyle CSSProperties 设置弹出层的样式
preventOverflow boolean 防止浮动元素溢出
renderExtraFooter () => ReactNode 自定义页脚内容
renderMenu (tree: ReactNode) => ReactNode ⚠️[已弃用] 使用 renderTree 代替
renderTree (tree: ReactNode) => ReactNode 自定义渲染树
renderTreeIcon (item:TreeNode, expanded: boolean) => ReactNode 自定义渲染树节点图标
renderTreeNode (item:TreeNode) => ReactNode 自定义渲染树节点
renderValue (values:string[], checkedItems:TreeNode[],selectedElement: ReactNode) => ReactNode 自定义渲染值
searchable boolean (true) 是否显示搜索框
searchBy (keyword: string, label: ReactNode, item: TreeNode) => boolean 自定义搜索方法
size 'lg' | 'md' | 'sm' | 'xs' ('md') 设置组件尺寸
toggleAs ElementType ('a') 为组件自定义元素类型
treeHeight number (320) 设置树的高度
uncheckableItemValues string[] 设置不显示复选框的树节点
value string[] 当前选中的值
valueKey string ('value') 设置树节点值在 data 中的 key
virtualized boolean 是否启用虚拟列表

TreeNode

interface TreeNode {
  /** The value of the option corresponds to the `valueKey` in the data. **/
  value: string | number;

  /** The content displayed by the option corresponds to the `labelKey` in the data. **/
  label: React.ReactNode;

  /** The data of the child option corresponds to the `childrenKey` in the data. */
  children?: TreeNode[];
}

Placement

type Placement =
  | 'bottomStart'
  | 'bottomEnd'
  | 'topStart'
  | 'topEnd'
  | 'leftStart'
  | 'leftEnd'
  | 'rightStart'
  | 'rightEnd'
  | 'auto'
  | 'autoVerticalStart'
  | 'autoVerticalEnd'
  | 'autoHorizontalStart'
  | 'autoHorizontalEnd';

ListProps

interface ListProps {
  /**
   * Size of a item in the direction being windowed.
   */
  itemSize?: number | ((index: number) => number);

  /**
   * Scroll offset for initial render.
   */
  initialScrollOffset?: number;

  /**
   * Called when the items rendered by the list change.
   */
  onItemsRendered?: (props: ListOnItemsRenderedProps) => void;

  /**
   * Called when the list scroll positions changes, as a result of user scrolling or scroll-to method calls.
   */
  onScroll?: (props: ListOnScrollProps) => void;
}

相关组件

  • <CheckTree> 用于展示一个树结构数据,同时支持 Checkbox 选择。
  • <Tree> 用于展示一个树结构数据。
  • <TreePicker> 选择器组件,树形单项选择器。
Vercel banner