Picker 选择器

在一组预设值中进行选择,eg:省市区选择。

规则

  • 尽量使用 Picker 来帮助用户完成输入,避免用户通过键盘直接输入。

  • DatePicker 是 Picker 的特定模式。

代码演示

基本

数据级联选择示例. (rc-form 文档)

  1. import { Picker, List } 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 style={{ backgroundColor: 'white' }}>
  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')} className="forss">
  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