Вместо моего сообщения запускается другое сообщение проверки при использовании дизайна Ant getFieldDecorator

Я использую дизайн Ant, и это моя форма, когда я нажимаю кнопку «Сохранить», я получаю этот тип сообщения проверки вместо сообщения проверки Antd с красной рамкой.

введите здесь описание изображения

Мне нужна такая ошибка проверки, которая показана в документах AntD. https://odesandbox.io/s/do52z

введите здесь описание изображения

Я написал свою функцию вот так

      <Form  id="myForm" onSubmit={this.handleSubmit}>
          <Form.Item label="Code">
                      <CustomInput
                        form={this.props.form}
                        type="text"
                        disabled={this.state.disableFields}
                        name="code"
                        id="code"
                        placeholder=""
                        required={true}
                        errorMsg={"Please input code!"}
                      />
        </Form.Item>
   </Form>

Это мой пользовательский ввод

const CustomInput = ({
  form, id, name, placeholder, required, errorMsg, type, disabled,}: Props) => {
  return form.getFieldDecorator(id, {
    rules: [
      {
        required: required,
        message: errorMsg
      }
    ]
  })(
    <Input
      type={type}
      name={name}
      id={id}
      disabled={disabled}
      placeholder={placeholder}
      className={name === "code" ? "code-input" : "input-box"}
    />
  );
};

export default CustomInput;

и это моя кнопка сохранения

             <Button
                className="save-btn"
                htmlType="submit"
                form="myForm"
              >
                Save
              </Button>

Я думаю, что мне здесь чего-то не хватает. заранее спасибо


person Abhi    schedule 17.04.2020    source источник
comment
Можете ли вы создать кодовый ящик?   -  person Zohaib Ijaz    schedule 17.04.2020


Ответы (1)


Входные данные дизайна Ant не имеют обязательной опоры. Требуемая опора должна быть указана внутри опоры правил form.item.

Поскольку вы указали тег reqired для ввода, Chrome отобразит запрос на заполнение поля пользователем.

Обновление на основе комментария

Переместите тег formitem в компонент custominput и повторите попытку.

  <Form  id="myForm" onSubmit={this.handleSubmit}>

                      <CustomInput
                        form={this.props.form}
                        type="text"
                        disabled={this.state.disableFields}
                        name="code"
                        id="code"
                        placeholder=""
                        required={true}
                        errorMsg={"Please input code!"}
                      />
   </Form>

..

const CustomInput = ({
  form, id, name, placeholder, required, errorMsg, type, disabled,}: Props) => {
  return(
   <Form.Item label="Code">
{form.getFieldDecorator(id, {
    rules: [
      {
        required: required,
        message: errorMsg
      }
    ]
  })(
    <Input
      type={type}
      name={name}
      id={id}
      disabled={disabled}
      placeholder={placeholder}
      className={name === "code" ? "code-input" : "input-box"}
    />
  )}

</Form.Item>
) 
};
person Hemanthvrm    schedule 17.04.2020
comment
Я удалил необходимую опору из, Теперь я не получаю хромирование. Но все же мне нужно показать проверку Ant Design с красной рамкой. почему они не работают - person Abhi; 17.04.2020
comment
Обновил мой ответ ... изучите его (если это сработает, выберите это как полезный ответ, будет полезно для других) - person Hemanthvrm; 17.04.2020
comment
Он работает с обновленным ответом, но перемещение ‹Form.Item /› внутри ‹CustomInput /› не очень хорошо, я использую его во многих местах. Почему он не работает с ‹Form.Item /› вне - person Abhi; 19.04.2020