代码之家  ›  专栏  ›  技术社区  ›  user8336738

从redux窗体中的特定字段中删除错误

  •  0
  • user8336738  · 技术社区  · 5 年前

    我有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字段的所有实例中的错误。

    0 回复  |  直到 5 年前