#javascript #reactjs #antd #ant-design-pro
#javascript #reactjs #antd #ant-design-pro
Вопрос:
У меня есть форма ant design на React.
- Как я могу получить весь список полей формы? (все они обернуты Form.Item)?
- Когда я отправляю форму, есть ли какой-либо способ узнать, какие поля изменены (затронуты) и их значение?
Ответ №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. хорошо, спасибо. нет прямой функции для получения полей касания