Cascader 级联选择器
对有层级关系结构的数据进行单项选择。
获取组件
import { Cascader } from 'rsuite';
// or
import Cascader from 'rsuite/Cascader';演示
默认
外观
尺寸
撑满
位置
提示:设置为
auto*时,尝试滚动页面或更改浏览器大小,它将自动出现在正确的位置。
父节点可选
自定义选项
禁用与只读
异步数据
可以通过 getChildren 属性和树节点上的 children 字段 length 为 0 以异步加载子级。
受控的
容器与防止溢出
直接展示
无障碍设计
了解更多有关无障碍设计的信息。
Props
<Cascader>
| 属性名称 | 类型(默认值) |
描述 |
|---|---|---|
| appearance | 'default' | 'subtle' ('default') |
设置外观 |
| block | boolean | 堵塞整行 |
| childrenKey | string ('children') |
设置选项子节点在 data 中的 key |
| classPrefix | string ('picker') |
组件 CSS 类的前缀 |
| cleanable | boolean (true) |
可以清除 |
| container | HTMLElement | (() => HTMLElement) | 设置渲染的容器 |
| data * | ItemDataType[] | 组件数据 |
| defaultValue | string | 设置默认值 |
| disabled | boolean | 禁用组件 |
| disabledItemValues | string[] | 禁用选项 |
| getChildren | (item: ItemDataType) => Promise<ItemDataType[]> | 异步加载树节点的子级 |
| height | number (320) |
设置 Dropdown 的高度 |
| inline | boolean | 在组件初始后直接展示菜单 |
| labelKey | string ('label') |
设置选项显示内容在 data 中的 key |
| locale | PickerLocaleType | 本地化的文本 |
| menuClassName | string | 选项菜单的 className |
| menuHeight | number | 设置菜单的高度 |
| menuWidth | number | 设置菜单的宽度 |
| onChange | (value:string, event) => void | value 发生改变时的回调函数 |
| onClean | (event:SyntheticEvent) => void | 清除值后的回调函数 |
| onClose | () => void | 关闭回调函数 |
| onEnter | () => void | 显示前动画过渡的回调函数 |
| onEntered | () => void | 显示后动画过渡的回调函数 |
| onEntering | () => void | 显示中动画过渡的回调函数 |
| onExit | () => void | 退出前动画过渡的回调函数 |
| onExited | () => void | 退出后动画过渡的回调函数 |
| onExiting | () => void | 退出中动画过渡的回调函数 |
| onOpen | () => void | 打开回调函数 |
| onSearch | (searchKeyword:string, event) => void | 搜索的回调函数 |
| onSelect | (item: ItemDataType, selectedPaths: ItemDataType[], event) => void | 选项被点击选择后的回调函数 |
| open | boolean | 是否打开 |
| parentSelectable | boolean | 设置父节点为可选 |
| placeholder | ReactNode ('Select') |
占位符 |
| placement | Placement ('bottomStart') |
打开位置 |
| preventOverflow | boolean | 防止浮动元素溢出 |
| renderExtraFooter | () => ReactNode | 自定义页脚内容 |
| renderMenu | (children: object[], menu:ReactNode, parentNode?: object, layer?: number) => ReactNode | 自定义渲染菜单列表 |
| renderMenuItem | (label:ReactNode, item: ItemDataType) => ReactNode | 自定义选项 |
| renderSearchItem | (label:ReactNode, items: ItemDataType[]) => ReactNode | 自定义渲染搜索结果选项 |
| renderValue | (value:string, selectedPaths: ItemDataType[], selectedElement:ReactNode) => ReactNode | 自定义被选中的选项 |
| searchable | boolean (true) |
可以搜索 |
| size | 'lg' | 'md' | 'sm' | 'xs' ('md') |
设置组件尺寸 |
| toggleAs | ElementType ('a') |
为组件自定义元素类型 |
| value | string | 设置值(受控) |
| valueKey | string ('value') |
设置选项值在 data 中的 key |
| caretAs | ElementType | 自定义右侧箭头图标的组件 |
ts:ItemDataType
interface ItemDataType {
/** The value of the option corresponds to the `valueKey` in the data. **/
value: string;
/** The content displayed by the option corresponds to the `labelKey` in the data. **/
label: ReactNode;
/**
* The data of the child option corresponds to the `childrenKey` in the data.
* Properties owned by tree structure components, such as TreePicker, Cascader.
*/
children?: ItemDataType[];
/**
* Properties of grouping functional components, such as CheckPicker, InputPicker
*/
groupBy?: string;
/**
* The children under the current node are loading.
* Used for components that have cascading relationships and lazy loading of children. E.g. Cascader, MultiCascader
*/
loading?: boolean;
}
ts:Placement
type Placement = 'bottomStart' | 'topStart' | 'autoVerticalStart';