Picker 选择器

定义/Definition

选择器展示了一组值,用户可以从中选择一个。 适用于数据有级联关系的选择器,比如省市区选择商品分类选择

规则 / Rule

  • 是日期时间选择器的通用模式

  • 包括一个或多个滑轮,每个滑轮含有一组值

  • 当前选中的值在中间,以深色标识

  • 不可以自定义大小(选择器的大小与iPhone的键盘相同)

一般来说,当用户对整组值都比较熟悉的时候,可以使用选择器。由于当滑轮静止的时候,大部分的数值会被隐藏,最好是在用户对所有数值均有预期的情况下才使用选择器。尽可能让让用户在当前视图中使用选择器。不要让他们在使用选择器时还要进入其它的视图。如果你需要展示的备选项数量很多,考虑使用表格视图(Table View)而不是选择器。因为表格视图的高度较大,内容滚动起来会更快。

代码演示

基本

数据级联选择示例

  1. import { Picker, List, Button } from 'antd-mobile';
  2. import district from 'site/data/district';
  3. import { createForm } from 'rc-form';
  4. let Test = React.createClass({
  5. getInitialState() {
  6. return {
  7. data: [],
  8. };
  9. },
  10. onClick() {
  11. console.log('start loading data');
  12. setTimeout(() => {
  13. this.setState({
  14. data: district,
  15. });
  16. }, 500);
  17. },
  18. setVal() {
  19. this.props.form.setFieldsValue({
  20. district: ['340000', '340800', '340822'],
  21. });
  22. },
  23. render() {
  24. const { getFieldProps } = this.props.form;
  25. return (<div>
  26. <List>
  27. <List.Header>联动选择</List.Header>
  28. <List.Body>
  29. <Picker extra="请选择(可选)" data={district} title="选择地区" {...getFieldProps('district', {
  30. initialValue: ['340000', '340800', '340824'],
  31. })}>
  32. <List.Item arrow="horizontal">省市区选择</List.Item>
  33. </Picker>
  34. <Picker data={this.state.data} cols={2} {...getFieldProps('district2')}>
  35. <List.Item arrow="horizontal" onClick={this.onClick}>省市选择(异步加载)</List.Item>
  36. </Picker>
  37. <Picker data={district} cols={1} {...getFieldProps('district3')}>
  38. <List.Item arrow="horizontal">选择省份</List.Item>
  39. </Picker>
  40. <List.Item><Button inline size="small" onClick={this.setVal}>手动设置省市区</Button></List.Item>
  41. </List.Body>
  42. </List>
  43. </div>);
  44. },
  45. });
  46. Test = createForm()(Test);
  47. ReactDOM.render(<Test />, mountNode);

Picker选择器 - 图1

API

成员说明类型默认值
data数据源Array<{value, label, children: Array}>-
value值, 格式[value1, value2, value3], 对应数据源的N级valueArray-
format格式化选中的值Function(values) => { return values.join(','); }
cols列数Number3
onChange选中后的回调Function(value) ,如果使用rc-form,一般不需要自己处理-
children通常是List.ItemObjectList.Item
okText选中的文案String确定
dismissText取消选中的文案String取消
title大标题String-
extraChildren如果是List.Item,则是extra属性的默认值, 如果是其它的UI组件,则value或者extra属性会经过format方法处理后传给children的extra属性,用户需要自己实现这个属性String请选择
style样式Object