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;

除了把自定义组件的值传回父组件 还有没有别的什么好办法

阅读 11.1k
3 个回答

已经解决~~
在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;

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

新手上路,请多包涵
<FormItem label={"币种"}>
        {getFieldDecorator('aaaa', {rules: [{}],})(
            <Currency value={this.valueChange}/>
        )}
    </FormItem>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏