@uiw/react-native
Version:
UIW for React Native
180 lines (168 loc) • 4.16 kB
Markdown
SelectCascader 级联选择
---
可用于类似于省市区选择
## 基础示例
```jsx
import { Component } from 'react';
import { SelectCascader } from '@uiw/react-native';
export default class SelectCascaderDemo extends Component {
constructor(props: SelectCascaderProps) {
super(props);
this.state = {
visible: false
};
}
onChange(val: any, label: string) {
console.log("val-------->", val);
console.log("label-------->", label);
}
render() {
const data = [
{
label: '北京',
value: '01',
children: [
{
label: '东城区',
value: '01-1',
},
{
label: '西城区',
value: '01-2',
},
{
label: '崇文区',
value: '01-3',
},
{
label: '宣武区',
value: '01-4',
},
],
},
{
label: '浙江',
value: '02',
children: [
{
label: '杭州',
value: '02-1',
children: [
{
label: '西湖区',
value: '02-1-1',
},
{
label: '上城区',
value: '02-1-2',
},
{
label: '江干区',
value: '02-1-3',
},
{
label: '下城区',
value: '02-1-4',
},
],
},
{
label: '宁波',
value: '02-2',
children: [
{
label: 'xx区',
value: '02-2-1',
},
{
label: 'yy区',
value: '02-2-2',
},
],
},
{
label: '温州',
value: '02-3',
},
{
label: '嘉兴',
value: '02-4',
},
{
label: '湖州',
value: '02-5',
},
{
label: '绍兴',
value: '02-6',
},
],
},
]
return (
<React.Fragment>
<Button
onPress={() => {
this.setState({visible: true});
}}>
显示选择器
</Button>
<SelectCascader
data={data}
onChange={this.onChange}
visible={this.state.visible}
onDismiss={() => {
this.setState({visible: false});
}}
/>
<React.Fragment>
);
}
}
```
## Props
```ts
import { StyleProp, TextStyle, ViewStyle } from 'react-native';
export type SelectCascaderOneValue = string | number | undefined;
export type SelectCascaderValue = SelectCascaderOneValue[];
export interface SelectCascaderProps {
/** 隐藏 */
onDismiss?: () => void;
/** 弹框标题 */
title?: string;
/** 取消button文字 */
dismissText?: string;
/** 确定button文字 */
okText?: string;
/** 自定义取消元素 */
renderDismissNode: React.ReactNode;
/** 自定义标题元素 */
renderTitleNode: React.ReactNode;
/** 自定义确定元素 */
renderOkNode: React.ReactNode;
/** 选中的值 */
value?: SelectCascaderValue;
/** 选中时执行此回调 */
onChange?: (value: SelectCascaderValue, label: string) => void;
/** 显示隐藏控制值 */
visible: boolean;
/** 列表数据 */
data: ICascaderDataItem[];
/** 默认选择的值 */
defaultValue?: SelectCascaderValue | undefined;
/** 确定选中的值 */
onOk?: (value: SelectCascaderValue, label: string) => void;
/** 列数 默认 3 */
cols?: number;
/** 选择器样式 */
pickerItemStyle?: StyleProp<TextStyle>;
/** 选择器头部样式 */
headerStyle?: StyleProp<ViewStyle>;
/** 点击蒙层是否关闭 */
maskClosable?: boolean;
/** 动作在被触摸操作激活时以多少不透明度显示 默认 1 */
activeOpacity?: number;
/** 动作有触摸操作时显示出来的底层的颜色 默认 #f1f1f1 */
underlayColor?: string;
}
```