鍍金池/ 問答/HTML/ antd Form中用自定義組件 submit 獲取不到自定義的值

antd Form中用自定義組件 submit 獲取不到自定義的值

父組件Form表單

submit= (e) => {
    this.props.form.validateFields((err, values) => {
      if (!err) {
        consle.log(values)
      }
    });
  }
<Form onSubmit={this.submit}>
    <FormItem label={"幣種"}>
        {getFieldDecorator('aaaa', {rules: [{}],})(
            <Currency valueChange={this.valueChange}/>
        )}
    </FormItem>
</Form>

自定義Currency組件

import React from 'react'
import {Select} from 'antd';

const Option = Select.Option

class Currency extends React.Component {

  render() {
    return (
      <Select>
        <Option value="CNY">人民幣(RMB)</Option>
        <Option value="BTC">比特幣(BTC)</Option>
        <Option value="USDT">泰達幣(USDT)</Option>
      </Select>    
      );
  }
}

export default Currency;

除了把自定義組件的值傳回父組件 還有沒有別的什么好辦法

回答
編輯回答
苦妄

你需要使用Form.create()(YourComponent)將你的組件包裹。

2018年4月9日 23:16
編輯回答
涼薄

已經解決~~
在Currency組件調用 this.props.onChange就可以獲取到了

import React from 'react'
import {Select} from 'antd';

const Option = Select.Option

class Currency extends React.Component {
  selectCurrency = (e) => {
      const {onChange} = this.props
      onChange(e)
  }
  render() {
    return (
      <Select onSelect={this.selectCurrency}>
        <Option value="CNY">人民幣(RMB)</Option>
        <Option value="BTC">比特幣(BTC)</Option>
        <Option value="USDT">泰達幣(USDT)</Option>
      </Select>    
      );
  }
}

export default Currency;
2017年12月1日 15:46
編輯回答
陌南塵
<FormItem label={"幣種"}>
        {getFieldDecorator('aaaa', {rules: [{}],})(
            <Currency value={this.valueChange}/>
        )}
    </FormItem>
2018年8月3日 20:20