AntDesign getFieldDecorator 获取自定义组件的值

Posted tian874540961

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AntDesign getFieldDecorator 获取自定义组件的值相关的知识,希望对你有一定的参考价值。

AntDesign getFieldDecorator 获取自定义组件的值

1.自定义或第三方的表单控件,也可以与 Form 组件一起使用。只要该组件遵循以下的约定:

(1)提供受控属性 value 或其它与 valuePropName 的值同名的属性。

(2)提供 onChange 事件或 trigger 的值同名的事件。

(3)不能是函数式组件。

2.创建组件

这里通过自定义的搜索输入框来展示

let timeout;
let currentValue;
function fetch(value, callback) 
  if (timeout) 
    clearTimeout(timeout);
    timeout = null;
  
  currentValue = value;
  function getData() 
    const params = 
      size: 10,
      name: value
    ;
    apiSubwayList(params).then(
      d => 
        if (currentValue === value) 
          const result = d.list;
          const data = [];
          result.forEach(r => 
            data.push(
              value: r.subwayId,
              text: r.name,
            );
          );
          callback(data);
        
      
    );
  
  timeout = setTimeout(getData, 300);

class SearchInput extends PureComponent 
  state = 
    data: [],
    value: undefined
  ;
  handleSearch = value => 
    fetch(value, data => this.setState(data));
  ;
  handleChange = value => 
    this.setState(value);
    this.props.onChange(value)
  ;
  render() 
    const options = this.state.data.map(d => <Option key=d.value>d.text</Option>);
    return (
      <div>
      <Select
        showSearch
        value=this.state.value
        placeholder=this.props.placeholder
        // style=this.props.style
        defaultActiveFirstOption=false
        showArrow=false
        filterOption=false
        onSearch=this.handleSearch
        onChange=this.handleChange
        notFoundContent=null
      >
        options
      </Select>
      <span>输入并选择对应选项,否则无效</span>
      </div>
    )
  

SearchInput.propTypes = 
  data: PropTypes.array,
  value: PropTypes.string,
  onChange: PropTypes.func
;
export default SearchInput;

可以看到,使用getFieldDecorator时,会通过props的形式向自定义的组件传入onChange回调方法,使用这个回调函数会通知getFieldDecorator所绑定字段的值的变化。

3.使用组件

<FormItem
    ...formItemLayout
    label=<span>所在地铁站</span>
>
    getFieldDecorator('owner', 
     rules: [
              required: true,
              message: '请选择所在地铁站',
              ,
            ],
    )(
    <SearchInput placeholder="输入并选择所属地铁"/>)
</FormItem>

使用getFieldDecorator会隐式的传入onChange回调方法,当然,如果想传入其他参数,也可以像placeholder那样显示的传入。

以上是关于AntDesign getFieldDecorator 获取自定义组件的值的主要内容,如果未能解决你的问题,请参考以下文章

AntDesign组件库的使用

AntDesign组件库的使用

antdesign是不是需要付费

antDesign+react实现表格

antdesign树select方法没反应

antdesign选择框空值没有提示