我有redux表单,在表单中,我将日期显示为三个独立的字段,在提交之后,我将这些值放在一起并验证它是否是正确的日期。如果有问题,我抛出新的SubmissionError和所有三个字段,这将使它们变红。问题是,在只更改一个字段之后,我想重置所有三个字段的错误。我可以派遣
clearSubmitErrors()
但这会清除整个形式,我不想那样。
class MyForm extends Component<InjectedFormProps> {
render() {
const { handleSubmit } = this.props;
return (
<form onSubmit={handleSubmit} className="requiredInfo-container">
<div className="input-wrapper" id="wrapper-birthDate">
<span className="input-label">
Date of birth
</span>
<div className="result-date-birth">
<div className="result-date-birth-date">
<Field
name="birthDateDay"
id="birthDateDay"
parentElementId="wrapper-birthDate"
component={CustomSelectInput}
placeholder="Day"
options={dayOptions()}
/>
</div>
<div className="result-date-birth-date">
<Field
required
name="birthDateMonth"
id="birthDateMonth"
parentElementId="wrapper-birthDate"
component={CustomSelectInput}
placeholder="Month"
options={monthOptions()}
/>
</div>
<div className="result-date-birth-date">
<Field
required
name="birthDateYear"
id="birthDateYear"
parentElementId="wrapper-birthDate"
component={CustomSelectInput}
placeholder="Year"
options={yearOptions()}
/>
</div>
</div>
</div>
</form>
)}}
const CustomSelectInput = ({
input,
options,
parentElementId,
id,
placeholder,
meta: { error }
}) => {
console.log(id, error);
if (document.querySelectorAll(`#${parentElementId}`).length && !error) {
document
.querySelectorAll(`#${parentElementId}`)[0]
.classList.remove("input-wrapper-error");
}
const defaultValue = input.value !== "" ? input.value : null;
return (
<div id={id}>
<SimpleSelect
testId={`custom-select-${id}`}
styles={{
control: base => ({
...base,
border: error
? "1px solid #FF0000"
: "1px solid #c0d9e8",
"&:hover": !error && {
borderColor: "#c0d9e8"
}
}),
}}
{...input}
value={defaultValue}
options={options}
placeholder={placeholder}
onBlur={event => event.preventDefault()}
onChange={value => input.onChange(value)}
/>
</div>
);
};
export default CustomSelectInput;
现在只有一个字段在我更改了它的值后会删除它的错误,我想删除CustomSelectInput字段的所有实例中的错误。