Задать вопрос
@Shavadrius

Как реализовать кнопку Reset Form в компоненте React?

Доброго времени суток!
Подскажите пожалуйста как реализовать функцию очистки формы по нажатию на кнопку (handleRefresh, если пройти по ссылке)?

codesandbox.io

Логика подсказывает, что нужно просто перерисовать всю форму с начальными пропсами, но можно это сделать из самой формы или нужно логику выносить выше, в родительский компонент App?
  • Вопрос задан
  • 309 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@Paul14
Для реализации функции очистки формы по нажатию кнопки, вам необходимо выполнить следующие шаги:

1. Внутри компонента Form добавьте состояние, которое будет хранить исходные значения формы. Для этого вы можете использовать useState хук и инициализировать его пустым объектом.
const [initialFormData, setInitialFormData] = useState<{ [id: string | number]: any }>({});


2. Внутри компонента Form создайте функцию для обработки события нажатия кнопки Reset (handleRefresh), в которой будет выполняться следующее:
- Установите исходные значения формы в состоянии formData, используя setFormData(initialFormData).
- Очистите значения во всех дочерних компонентах Input путем вызова метода unregister на каждом из них.

const handleRefresh = () => {
  setFormData(initialFormData);
  props.elements.forEach((item) => {
    item.unregister({ id: item.name, value: "" });
  });
};


3. Добавьте кнопку Reset в компонент Form с обработчиком handleRefresh.

<Button onClick={handleRefresh}>Reset</Button>

Теперь, при нажатии на кнопку Reset, значения формы должны быть сброшены до исходных значений, а все дочерние компоненты типа Input должны быть очищены.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽