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';