Как я могу очистить значения по умолчанию для Material UI FormControl?

Я создал простую форму (логин и пароль), используя FormGroup и FormControl (Material UI), все работает нормально, за исключением того, что форма всегда имеет значение по умолчанию (которое исходит из последнего введенного допустимого значения)

Я создал две ссылки с помощью React.createRef и назначил их свойству ref входов, например ref={loginField}, затем, в useEffect с помощью [], я установил все значения, состояния, поддерживающие поля, и ссылки, например loginField.current.value = '';

Однако это не работает. Кажется, что loginField.current.value = '' ничего не делает.

Это моя форма

        return (
    <Row className="justify-content-center align-items-center h-100">
      <Col md={4}>
        <MainLogo style={{ marginBottom: 30 }} />
        <FormGroup>
          <FormControl className={clsx(classes.margin, classes.textField)}>
            <StyledInput
              id={LOGIN}
              type="text"
              value={values.login}
              disableUnderline={true}
              placeholder="Enter email or RUT"
              ref={loginField}
              onFocus={handleFocus}
              error={fieldsErrors.loginError !== ''}
              onChange={handleChange(LOGIN)}
            />
          </FormControl>
          {fieldsErrors.loginError && <p style={styles.errorStyle}>{fieldsErrors.loginError}</p>}
          <FormControl className={clsx(classes.margin, classes.textField)}>
            <StyledInput
              id={PASSWORD}
              type={showPassword ? 'text' : 'password'}
              value={values.password}
              disableUnderline={true}
              placeholder="Enter password"
              ref={passwordField}
              onChange={handleChange(PASSWORD)}
              onFocus={handleFocus}
              error={fieldsErrors.passwordError !== ''}
              endAdornment={
                <InputAdornment position="end">
                  <IconButton
                    aria-label="toggle password visibility"
                    onClick={handleClickShowPassword}
                    onMouseDown={handleMouseDownPassword}
                  >
                    {showPassword ? <Visibility /> : <VisibilityOff />}
                  </IconButton>
                </InputAdornment>
              }
            />
          </FormControl>
          {fieldsErrors.passwordError && <p style={styles.errorStyle}>{fieldsErrors.passwordError}</p>}

          <Button
            variant={submitVariant}
            className="mt-4 ml-auto"
            size="lg"
            type="submit"
            onClick={() => handleSubmit(dispatch, values, fieldsErrors, clearFields)}
          >
            Init Session
          </Button>
          <LinkBtn className="ml-auto mt-2" to="/recover_password">
            Recover Passsword
          </LinkBtn>
        </FormGroup>
      </Col>
    </Row>
  );
};

Я заявил

        let loginField = React.createRef();
  let passwordField = React.createRef();

И в useEffect я делаю

        useEffect(() => {
    setValues({ login: '', password: '' });
    setFieldsErrors({ loginError: '', passwordError: '' });
    loginField.current.value = '';
    passwordField.current.value = '';
  }, []);

Однако он не очищает входы.

Что мне здесь не хватает?

заранее спасибо

Рафаэль

0 ответов

Другие вопросы по тегам