渲染出一个单选按钮
该组件为受控组件,选中完全取决于props中的selectIndex
npm install @qnpm/q-components --save --registry=http://npmrepo.corp.qunar.com
显示代码
import { Select } from "@qnpm/q-components";
const renderBaseSelect = (props) => {
const [
selectedIndex,
setSelectedIndex
] = useState(props.selectedIndex);
return (
<React.Fragment>
<Select
{...props}
type="base"
selectedIndex={selectedIndex}
selectItem={
(value, index) => {
setSelectedIndex(index);
}
}
/>
</React.Fragment>
);
};
<View style={styles.container}>
<Text>基础</Text>
{
renderBaseSelect({
dataSource: [
'选项1',
'选项2'
]
})
}
<Text>默认选中</Text>
{
renderBaseSelect({
dataSource: [
'选项1',
'选项2',
'默认选中'
],
selectedIndex: 3
})
}
<Text>不可选</Text>
{
renderBaseSelect({
dataSource: [
'选项1',
'选项2'
],
disableIndexs: [1]
})
}
<Text>type:line</Text>
{
renderBaseSelect({
dataSource: [
'选项1',
'选项2',
'选项3'
],
labelType: 'line'
})
}
</View>
显示代码
import { Select } from "@qnpm/q-components";
const renderLabelSelect = (props) => {
const [
selectedIndex,
setSelectedIndex
] = useState(props.selectedIndex);
return (
<React.Fragment>
<Select
{...props}
type="label"
selectedIndex={selectedIndex}
selectItem={
(value, index) => {
setSelectedIndex(index);
}
}
/>
</React.Fragment>
);
};
<View style={styles.container}>
<Text>基础</Text>
{
renderLabelSelect({
dataSource: [
'选项1',
'选项2'
]
})
}
<Text>默认选中</Text>
{
renderLabelSelect({
dataSource: [
'选项1',
'选项2',
'默认选中'
],
selectedIndex: 3
})
}
<Text>不可选</Text>
{
renderLabelSelect({
dataSource: [
'选项1',
'选项2'
],
disableIndexs: [1]
})
}
<Text>type:line</Text>
{
renderLabelSelect({
dataSource: [
'选项1',
'选项2',
'选项3'
],
labelType: 'line'
})
}
<Text>type:lableRadius</Text>
{
renderLabelSelect({
dataSource: [
'选项1',
'选项2',
'选项3'
],
lableRadius: '20'
})
}
<Text>type:numberOfLists</Text>
{
renderLabelSelect({
dataSource: [
'选项1',
'选项2',
'选项3'
],
numberOfLists: 3
})
}
</View>
属性名 | 类型 | 默认值 | 是否必须 | 说明 |
---|---|---|---|---|
accessibilityPreName |
string |
null |
false |
无障碍标签前缀 |
customStyle |
ViewStyle |
宽度100% |
false |
组件样式,仅可用于设置margin和width |
dataSource |
array |
[] |
false |
数据源,数组中的每个元素都是字符串类型 |
disableIndexs |
array |
[] |
false |
不可选选项 |
fontSize |
string or number |
16 |
false |
字号 |
iconSize |
string or number |
16 |
false |
图标字号 |
itemHeight |
string or number |
50 |
false |
单个item的高度 |
lableRadius |
string or number |
8 |
false |
标签圆角弧度,只有type为label时有效 |
labelType |
side |line |
side |
false |
label选项是否带边框 |
needScale |
boolean |
false |
false |
是否支持缩放 |
numberOfLists |
number |
2 |
false |
用于指定标签样式时候,共有多少列标签,只有type为label时有效 |
renderItem |
(index: number, selected: boolean) => JSX.Element |
null |
false |
自定义item view |
renderLeftNode |
(index: number) => JSX.Element |
null |
false |
基础类型左侧组件 |
selectedIndex |
number |
0 |
false |
指定某个选中的item,从0开始 |
selectItem |
(index: number) => {} |
无 |
false |
选中某个item的回调 |
type |
base |label |
base |
false |
指定单选Picker的类型,默认base类型(列表样式,每个item之间有分割线 |