Получить список полей формы Ant Design

#javascript #reactjs #antd #ant-design-pro

#javascript #reactjs #antd #ant-design-pro

Вопрос:

У меня есть форма ant design на React.

  1. Как я могу получить весь список полей формы? (все они обернуты Form.Item)?
  2. Когда я отправляю форму, есть ли какой-либо способ узнать, какие поля изменены (затронуты) и их значение?

Ответ №1:

 import React from 'react'

function TempForm({ form }) {
    const submit = e => {
        e.preventDefault()
        form.validateFields((error, values) => {
            if (error) {
              console.log('error while validating')
            } else if (values) {
               console.log('name: ', values.name, 'email: ', values.email)
             }
        })
     }
return (
<Form onSubmit={submit}>
  <div>
      <Form.Item label="Customer">
        {form.getFieldDecorator('name', {
          initialValue: 'John',
          rules: [{ required: true, message: 'Please select a customer!' }],
        })(<Input type="text" placeholder="name" />)}
      </Form.Item>
      <Form.Item label="Customer Email">
        {form.getFieldDecorator('email', {
          rules: [{ required: true, message: 'Please select a Clinic' }],
        })(<Input type="email" placeholder="customer email" />)}
      </Form.Item>
    </div>
</Form>
 )
 }

export default Form.create()(TempForm)
 

Здесь у нас есть antd-форма (импортируйте все необходимые компоненты) и функция отправки. Вы можете легко получить доступ ко всем вашим полям, как показано на рисунке. Здесь значениями будет js-объект, содержащий пару ключ-значение, или вы можете использовать form.GetFieldValue(‘name’) для доступа к значениям формы.

Комментарии:

1. Спасибо, и есть ли какой-нибудь способ получить только пару ключей и значений, которые касаются поля? @devSpartan

2. Допустим, пользователь вводит что-то в поле ввода и удаляет это без сохранения, тогда я думаю, вам следует использовать контрольную переменную для каждого поля, для которого будет установлено значение true, если есть какие-либо изменения в поле ввода. Или вы можете проверить длину конечных значений, если она равна 0 или больше 0

3. хорошо, спасибо. нет прямой функции для получения полей касания