ant-design/components/form/demo/global-state.md

1.8 KiB

order title
8
zh-CN en-US
表单数据存储于上层组件 Store Form Data into Upper Component

zh-CN

通过使用 onFieldsChangemapPropsToFields,可以把表单的数据存储到上层组件或者 Reduxdva 中。

en-US

We can store form data into upper component or Redux or dva by using onFieldsChange and mapPropsToFields.

import { Form, Input } from 'antd';
const FormItem = Form.Item;

const CustomizedForm = Form.create({
  onFieldsChange(props, fields) {
    props.onChange(fields);
  },
  mapPropsToFields(props) {
    return {
      username: {
        ...props.username,
        value: props.username.value.toUpperCase(),
      },
    };
  },
})((props) => {
  const { getFieldDecorator } = props.form;
  return (
    <Form inline>
      <FormItem label="Username">
        {getFieldDecorator('username', {
          rules: [{ required: true, message: 'Username is required!' }],
        })(<Input />)}
      </FormItem>
    </Form>
  );
});

const Demo = React.createClass({
  getInitialState() {
    return {
      fields: {
        username: {
          value: 'benjycui',
        },
      },
    };
  },
  handleFormChange(fields) {
    this.setState({ fields });
  },
  render() {
    const fields = this.state.fields;
    return (
      <div>
        <CustomizedForm {...fields} onChange={this.handleFormChange} />
        <pre className="language-bash">
          {JSON.stringify(fields, null, 2)}
        </pre>
      </div>
    );
  },
});

ReactDOM.render(<Demo />, mountNode);