父组件react
class Modals extends Component { handleCancel = () => { this.props.closeModal(false); } handleCreate = () => { console.log(this.formRef.getItemsValue()); //六、调用子组件的自定义方法getItemsValue。注意:经过this.formRef 才能拿到数据 this.props.getFormRef(this.formRef.getItemsValue()); this.props.closeModal(false); } render() { const { visible } = this.props; return ( <Modal visible={visible} title="新增" okText="保存" onCancel={this.handleCancel} onOk={this.handleCreate} > <Forms wrappedComponentRef={(form) => this.formRef = form} /> </Modal> ); } }
子组件antd
import React, { Component } from 'react'; import { Form, Input } from 'antd'; const FormItem = Form.Item; class Forms extends Component{ getItemsValue = ()=>{ //三、自定义方法,用来传递数据(须要在父组件中调用获取数据) const valus= this.props.form.getFieldsValue(); //四、getFieldsValue:获取一组输入控件的值,如不传入参数,则获取所有组件的值 return valus; } render(){ const { form } = this.props; const { getFieldDecorator } = form; return( <> <Form layout="vertical"> <FormItem label="姓名"> {getFieldDecorator('name')( <Input /> )} </FormItem> <FormItem label="年龄"> {getFieldDecorator('age')( <Input /> )} </FormItem> <FormItem label="城市"> {getFieldDecorator('address')( <Input /> )} </FormItem> </Form> </> ) } } export default Form.create()(Forms);
子组件中 获取表单值 app
this.props.form.getFieldsValue() 这个方法,不能验证,直接获取值, 返回的是一个数据对象
this.props.form.validateFields()这个方法能够验证规则后获取值 ,直接返回 该方法 是一个 Promise 对象,而且控制台在验证有必填数据没填写的时候会报错,虽然不影响使用 可是 也很差看
getItemsValue = ()=>{ //自定义方法,用来传递数据(须要在父组件中调用获取数据) // const valus= this.props.form.validateFields(); return new Promise((resolve, reject)=>{ this.props.form.validateFields((error:any,value:any)=>{ if (!error) { resolve(value); }else{ reject(); } }); }) }