Cascader 级联

开发指南

何时使用

  • 适用于从一组具有关联性的数据集合中进行选择的交互方式。

  • 由于子集目录隐藏,级联是一种节约屏幕空间的有效方法。

  • 级别数因业务需求而定,建议不超过5级。

  • 级联多用于表单场景,可以独立在页面中使用,也可以与其他元素组合使用,如级联选择。

Select:

基本使用

展示基本的单选用法。

Expand trigger type:

展开触发行为

展示可通过expandTriggerType来设置不同的展开触发行为,支持clickhover,默认值为click

Select:

多选

展示基本的多选用法。

设置是否只能选择叶子项

展示受控单选以及是否只能选择叶子项的用法。

设置父子节点选中是否关联

展示受控多选以及是否开启严格受控父子节点选中不再关联的用法。

  • 陕西
  • 新疆
  • 巴音郭楞蒙古自治州
  • 库尔勒市
  • 和静县

自定义样式

可以通过listStylelistClassName来定制组件宽高。

  • 陕西

异步加载数据

展示动态获取数据的用法。

  • 西安
  • 铜川

异步加载数据

展示动态获取数据的用法。

API

Cascader

参数说明类型默认值
dataSource数据源,结构可参考下方说明Array<Object>[]
defaultValue(非受控)默认值String/Array<String>null
value(受控)当前值String/Array<String>-
onChange选中值改变时触发的回调函数

签名:
Function(value: String/Array, data: Object/Array, extra: Object) => void
参数:
value: {String/Array} 选中的值,单选时返回单个值,多选时返回数组
data: {Object/Array} 选中的数据,包括 value 和 label,单选时返回单个值,多选时返回数组,父子节点选中关联时,同时选中,只返回父节点
extra: {Object} 额外参数
extra.selectedPath: {Array} 单选时选中的数据的路径
extra.checked: {Boolean} 多选时当前的操作是选中还是取消选中
extra.currentData: {Object} 多选时当前操作的数据
extra.checkedData: {Array} 多选时所有被选中的数据
extra.indeterminateData: {Array} 多选时半选的数据
Function-
defaultExpandedValue(非受控)默认展开值,如果不设置,组件内部会根据 defaultValue/value 进行自动设置Array<String>-
expandedValue(受控)当前展开值Array<String>-
expandTriggerType展开触发的方式

可选值:
'click', 'hover'
Enum'click'
onExpand展开时触发的回调函数

签名:
Function(expandedValue: Array) => void
参数:
expandedValue: {Array} 各列展开值的数组
Function-
useVirtual是否开启虚拟滚动Booleanfalse
multiple是否多选Booleanfalse
canOnlySelectLeaf单选时是否只能选中叶子节点Booleanfalse
canOnlyCheckLeaf多选时是否只能选中叶子节点Booleanfalse
checkStrictly父子节点是否选中不关联Booleanfalse
listStyle每列列表样式对象Object-
listClassName每列列表类名String-
itemRender每列列表项渲染函数

签名:
Function(data: Object) => ReactNode
参数:
data: {Object} 数据
返回值:
{ReactNode} 列表项内容
Functionitem => item.label
loadData异步加载数据函数

签名:
Function(data: Object, source: Object) => void
参数:
data: {Object} 当前点击异步加载的数据
source: {Object} 当前点击数据
Function-

dataSource数据结构

const dataSource = [{
    value: '2974',
    label: '西安',
    children: [
        { value: '2975', label: '西安市', disabled: true },
        { value: '2976', label: '高陵县', checkboxDisabled: true },
        { value: '2977', label: '蓝田县' },
        { value: '2978', label: '户县' },
        { value: '2979', label: '周至县' },
        { value: '4208', label: '灞桥区' },
        { value: '4209', label: '长安区' },
        { value: '4210', label: '莲湖区' },
        { value: '4211', label: '临潼区' },
        { value: '4212', label: '未央区' },
        { value: '4213', label: '新城区' },
        { value: '4214', label: '阎良区' },
        { value: '4215', label: '雁塔区' },
        { value: '4388', label: '碑林区' },
        { value: '610127', label: '其它区' }
    ]
}];

数组中 Item 的自定义属性也会被透传到 onChange 函数的 data 参数中。

ARIA and KeyBoard

按键说明
Left Arrow获取同级当前项前一项焦点
Right Arrow获取同级当前项后一项焦点
Tab进入当前项的子元素,并获取第一个子元素为焦点
Esc返回当前项的父元素并获取焦点
SPACE选择当前项