CascaderSelect

级联选择。

何时使用 #

级联选择由选择器和级联组成。把级联组件以弹层的方式隐藏,多用于表单场景。

代码演示 #

基本使用 #

展示基本的单选用法。

多选 #

设置multipletrue,开启多选,此时节点可勾选。

默认展开值 #

通过defaultExpandedValue设置默认展开值用法。

搜索 #

通过设置showSearchtrue,可以开启组件的搜索功能, 通过filter属性自定义搜索逻辑。

禁用状态 #

通过 disabled 属性设置是否禁用节点,禁用情况下,节点将不响应任何交互;通过 checkboxDisabled 属性设置节点是否可以勾选,仅在多选情况下生效。

展开触发行为 #

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

设置是否只能选择叶子项 #

通过canOnlyCheckLeaf属性设置是否仅叶子节点可勾选,仅在多选的时候有效。

选中即发生改变 #

通过changeOnSelect设置是否选中即发生改变,允许只选中父节点,该属性仅在单选模式下有效。

异步加载数据 #

通过loadData动态获取数据,isLeaf属性用于标志是否是叶子节点。

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

通过checkStrictly设置父子节点是否关联选中状态,仅在多选情况下有效。

自定义值渲染 #

通过valueRender自定值渲染。

自定义Item样式 #

可以通过 displayRender 来定制单选时展示的结果,可以通过 listStylelistClassName 来定制组件宽高。

API #

CascaderSelect #

继承 Cascader, Select 的部分属性,支持透传给 Cascader 的属性有 dataSource, useVirtual, multiple, canOnlyCheckLeaf, checkStrictly, resultRender, expandedValue, defaultExpandedValue, expandTriggerType, onExpand, listStyle, listClassName, loadData, itemRender, immutable。支持透传给 Select 的包括除上面传给 Cascader 和下方单独列出的属性以外的其他全部属性。

参数 说明 类型 默认值 是否必填 支持版本
size 选择框大小 'small' | 'medium' | 'large' 'medium' -
disabled 是否禁用 boolean false -
hasArrow 是否有下拉箭头 boolean true -
hasBorder 是否有边框 boolean true -
hasClear 是否有清除按钮 boolean false -
readOnly 是否只读,只读模式下可以展开弹层但不能选 boolean - -
defaultValue (非受控)默认值 string | Array<string> - -
value (受控)当前值 string | Array<string> - -
onChange 选中值改变时触发的回调函数 (
value: string | Array<string> | null,
data: CascaderDataItem | Array<CascaderDataItem> | null,
extra?: Extra
) => void
- -
changeOnSelect 是否选中即发生改变,该属性仅在单选模式下有效 boolean false -
displayRender 选择框单选时展示结果的自定义渲染函数 (
label: Array<React.ReactNode>,
data: CascaderSelectDataItem
) => React.ReactNode
- -
showSearch 是否显示搜索框 boolean false -
filter 自定义搜索函数 (searchValue: string, path: CascaderSelectDataItem[]) => boolean - -
onSearch 当搜索框值变化时回调 (value: string) => void - 1.23
resultAutoWidth 搜索结果列表是否和选择框等宽 boolean true -
notFoundContent 无数据时显示内容 React.ReactNode - -
header 自定义下拉框头部 React.ReactNode - -
footer 自定义下拉框底部 React.ReactNode - -
defaultVisible 初始下拉框是否显示 boolean false -
visible 当前下拉框是否显示 boolean - -
onVisibleChange 下拉框显示或关闭时触发事件的回调函数 (visible: boolean, type?: CascaderSelectVisibleChangeType) => void - -
popupProps 透传到 Popup 的属性对象 React.ComponentPropsWithRef<typeof Popup> - -
isPreview 是否为预览态 boolean false -
renderPreview 自定义预览态 (
value: CascaderSelectDataItem | CascaderSelectDataItem[],
props: CascaderSelectProps
) => React.ReactNode
- -
menuProps 透传到 Cascader 的属性对象 Omit<CascaderProps, 'onSelect' | 'onChange'> - -
autoClearSearchValue 是否在选中项后清空搜索框,只在 multiple 为 true 时有效 boolean false -

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 参数中。

无障碍键盘操作指南 #

按键 说明
Up Arrow 获取同级当前项前一项焦点
Down Arrow 获取同级当前项后一项焦点
Left Arrow 进入当前项的子元素,并获取第一个子元素为焦点
Right Arrow 返回当前项的父元素并获取焦点
Enter 打开目录或选择当前项
Esc 关闭目录
SPACE 选择当前项