React-hook-form Нужно нажать дважды для удаления последнего символа ввода и дважды для ввода первого символа

#javascript #reactjs #react-hook-form

#javascript #reactjs #react-hook-form

Вопрос:

Я использую форму React Hook для проверки моей формы, включающей множество входных данных. Всего пять, кроме одной проблемы, из-за которой мне приходится дважды нажимать пробел для удаления последнего символа и дважды для ввода первого символа. Например. Если мне нужно показать значение ввода ‘jonh’, тогда я должен дважды нажать ‘j’, чтобы можно было отобразить эту букву. И когда я удаляю ‘john’, нажмите 1 пробел для ‘n’, 1 пробел для ‘h’, 1 пробел для ‘o’, НО 2 пробел для ‘j’. Я думал, что это из формы react hook, потому что я не использую, это не проблема. Ценю любую помощь. Большое вам спасибо.

Codesanbox: https://codesandbox.io/s/react-hook-form-j63o9?file=/src/App.js

Ответ №1:

Вы не используете React-Hook-Form прямо сейчас. Вы только импортировали его и зарегистрировали.

Вот как использовать React-Hook-Form:

 import React from 'react'
import { useForm } from 'react-hook-form'


const { register, handleSubmit } = useForm({
    defaultValues: {
      name: '',
      code: '',
      description: '',
      price: '',
      weight: '',
      long: '',
      width: '',
      high: '',
    },
  });

const onSubmit = async (data) => {

};

<form className="popup-product__form" onSubmit={handleSubmit(onSubmit)}>
    <input
        type="text"
        name="name"
        className="form-control"
        placeholder="Message"
        ref={register({
            required: 'Errors Message ....',
        })}
    />
    {errors.name amp;amp; (
        <div className="form-error">
            {errors.name.message}
        </div>
    )}
   <input value="Submit" type="submit"/>
</form>
 

Комментарии:

1. Извините за пропущенный код при копировании. Вы можете увидеть это в Codesanbox здесь: codesandbox.io/s/react-hook-form-j63o9?file=/src/App.js

2. Мой ответ выше был полным. Смотрите этот рабочий CSB .

3. Не могли бы вы просмотреть, 1) при удалении входного значения не отображается сообщение об ошибках; 2) в моем проекте я использую обработчик onChange для входного тега, но вы его удалили…..

4. Я протестировал его, и он по-прежнему отображает сообщение об ошибке при удалении вашего ввода. Вам не нужен обработчик onChange для формы React Hook. Именно по этой причине вам понадобилось дополнительное нажатие клавиши. Форма React Hook заботится о onChange и setState всех полей формы.