简体   繁体   English

ant.d - 表单 - 如何使用标准规则 API 显示警告?

[英]ant.d - Form - How to show warnings with standard rules API?

I have a generic rules for my form item:我的表单项有一个通用规则:

<Form.Item
        label="Username"
        name="username"
        rules={[{ required: true, message: 'Please input your username!' }]}
      >
        <Input />
</Form.Item>

What I would like to do is for an empty input display not red, but orange formatting, similar to validateStatus='warning' .我想做的是空输入显示不是红色,而是橙色格式,类似于validateStatus='warning'
In other words - when the rule clicks - show orange warning like this:换句话说 - 当规则点击时 - 显示橙色警告,如下所示:
在此处输入图像描述
Is that possible w\o explicitly interacting with form state via useForm ?是否可以通过useForm与表单 state 显式交互? (wouldn't wanna do that) (不想那样做)

It seems that you can only set validateStatus to 'warning' to show warning style.看来您只能将 validateStatus 设置为 'warning' 以显示警告样式。

Here's how it works to set validateStatus in source code of FormItem.这是在 FormItem 的源代码中设置 validateStatus 的工作原理。 When validateStatus is undefined, mergedValidateStatus can only be 'validating', 'error', 'success'当 validateStatus 未定义时,mergedValidateStatus 只能是 'validating', 'error', 'success'

let mergedValidateStatus: ValidateStatus = '';
if (validateStatus !== undefined) {
  mergedValidateStatus = validateStatus;
} else if (meta?.validating) {
  mergedValidateStatus = 'validating';
} else if (meta?.errors?.length || subErrorList.length) {
  mergedValidateStatus = 'error';
} else if (meta?.touched) {
  mergedValidateStatus = 'success';
}

const itemClassName = {
  [`${prefixCls}-item`]: true,
  [`${prefixCls}-item-with-help`]: domErrorVisible || !!help,
  [`${className}`]: !!className,

  // Status
  [`${prefixCls}-item-has-feedback`]: mergedValidateStatus && hasFeedback,
  [`${prefixCls}-item-has-success`]: mergedValidateStatus === 'success',
  [`${prefixCls}-item-has-warning`]: mergedValidateStatus === 'warning',
  [`${prefixCls}-item-has-error`]: mergedValidateStatus === 'error',
  [`${prefixCls}-item-is-validating`]: mergedValidateStatus === 'validating',
  [`${prefixCls}-item-hidden`]: hidden,
};

https://github.com/ant-design/ant-design/blob/8a264baf67322af5e786af13248311e89a1a8b05/components/form/FormItem.tsx#L178 https://github.com/ant-design/ant-design/blob/8a264baf67322af5e786af13248311e89a1a8b05/components/form/FormItem.tsx#L178

If you add warningOnly: true to your rule, the user will not be blocked from submitting and you'll get the desired behavior.如果您将warningOnly: true添加到您的规则,则不会阻止用户提交并且您将获得所需的行为。

More info at https://ant.design/components/form/#Rule更多信息在https://ant.design/components/form/#Rule

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM