useCascader

级联选择器 Hook

代码演示

单选

默认为单选,可以通过 checkNode 方法选中任意节点,是否只选择叶子节点由用户自行控制

Live Editor
Copy

多选(按照父子节点互相不关联)

设置 checkStrictly = true,表示严格遵守父子节点互相不关联

Live Editor
Copy

多选(记录叶子节点)

Live Editor
Copy

多选(记录典型结点)

设置 valueType = branch 后,记录到 value 中的为典型结点(当某个层级的结点全选时,对应的父结点即为典型结点)

Live Editor
Copy

异步加载结点

配置 lazyLoad, 可实现结点异步加载,loadFresh 控制是否每次都重新加载结点

Live Editor
Copy

API

interface TreeNode {
[key: string]: any
children?: TreeNode[]
}
type UseCascader = (treeData: TreeNode[], options: Options) => Result

Options

参数说明必选类型默认值
valueType以哪类节点作为值:
leaf:底层叶子节点
branch:子节点全选的节点
-'branch'' | 'leaf''leaf'
valueKey以节点对象的指定 key 作为值的唯一标识-string'value'
depth树形结构的深度number-
checkStrictly是否严格的遵守父子节点不互相关联-booleanfalse
emitPath记录的数据( value )是否记录全路径-booleantrue
multiple是否多选-booleanfalse
lazyLoad异步加载子节点方法-(node: TreeNode, level: number, {resolve, reject}: {resolve: (children: TreeNode[]) => void; reject: (children: TreeNode[]) => void}) => void-
loadFresh加载之前异步加载过的子节点时,是否不复用缓存,重新加载新数据-booleanfalse

Result

参数说明类型备注
value勾选的值TreeNode | TreeNode[] | TreeNode[][]multiple === false && emitPath === false时,value => TreeNode
multiple === false && emitPath === true时,value => TreeNode[]
multiple === true && emitPath === false时,value => TreeNode[]
multiple === true && emitPath === true时,value => TreeNode[][]
expandList各层级展开的节点列表{ node: TreeNode; selected: boolean; checked: boolean; indeterminate: boolean }[][]-
checkNode(取消)勾选节点(node: TreeNode | string | number, levelOrChecked?: number | boolean, checked?: boolean)=> void默认为 toggle 模式,可通过显式传入 checked 明确操作;传入完整的节点数据和对应的 level,可以提交执行效率
selectNode(取消)选择某个节点以展开/折叠子节点(node: TreeNode | string | number, level?: number) => void传入完整的节点数据和对应的 level,可以提交执行效率