Обновите входное значение React с помощью состояния и устраните проблему DefaultValue

Если при использовании React вы хотите обновить defaultValueполя ввода на основе состояния, вместо этого вам следует использовать свойство value. Свойство defaultValueиспользуется только для установки начального значения ввода и не обновляется при изменении состояния.

Вот несколько способов обновления входного значения при изменении состояния:

  1. Используйте свойство value: вместо использования defaultValueиспользуйте свойство valueи обрабатывайте входные изменения с помощью >onChangeобработчик событий. Таким образом, входное значение будет контролироваться состоянием и обновляться соответствующим образом.
<input value={stateValue} onChange={handleChange} />
  1. Используйте хук useEffect: вы можете использовать хук useEffectдля обновления входного значения при изменении состояния. Установите значение состояния в качестве зависимости эффекта и обновите поле ввода с помощью свойства JavaScript value.
import { useEffect, useState } from 'react';
function MyComponent() {
  const [stateValue, setStateValue] = useState('');
  useEffect(() => {
    document.getElementById('myInput').value = stateValue;
  }, [stateValue]);
  const handleChange = (event) => {
    setStateValue(event.target.value);
  };
  return <input id="myInput" onChange={handleChange} />;
}
  1. Используйте такую ​​библиотеку, как react-hook-form: такие библиотеки, как react-hook-form, обеспечивают управление формами и могут обрабатывать входные значения и обновления состояния за вас. Они имеют встроенные механизмы для привязки входных значений к состоянию и обеспечивают функции проверки.
import { useForm } from 'react-hook-form';
function MyComponent() {
  const { register, handleSubmit } = useForm();
  const onSubmit = (data) => {
    console.log(data);
  };
  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      <input {...register('myField')} />
      <input type="submit" value="Submit" />
    </form>
  );
}