Проверяет понимание управления состоянием формы и сброса полей ввода после отправки данных в React.
В React управляемые компоненты (controlled components) являются стандартным подходом для работы с формами. Значение поля ввода хранится в состоянии компонента и обновляется через обработчик onChange. Когда пользователь добавляет элемент (например, в список задач), необходимо не только обработать новые данные, но и сбросить поле ввода для удобства дальнейшего использования.
Рассмотрим простой компонент для добавления элементов в список:
import React, { useState } from 'react';
function TodoList() {
const [items, setItems] = useState([]);
const [inputValue, setInputValue] = useState('');
const handleAdd = () => {
if (inputValue.trim() === '') return;
setItems([...items, inputValue]);
setInputValue(''); // Очищаем поле
};
return (
<div>
<input
type="text"
value={inputValue}
onChange={(e) => setInputValue(e.target.value)}
/>
<button onClick={handleAdd}>Добавить</button>
<ul>
{items.map((item, index) => (
<li key={index}>{item}</li>
))}
</ul>
</div>
);
}В этом примере inputValue управляет содержимым поля. После добавления элемента вызывается setInputValue(''), что немедленно очищает поле ввода. Важно, что очистка происходит после успешного добавления, а не до него, чтобы избежать потери данных.
Иногда разработчики используют неконтролируемые компоненты с ref для доступа к DOM-элементу напрямую. Однако это менее предпочтительно, так как нарушает принцип единого источника истины в React. В большинстве случаев управляемые компоненты проще в отладке и тестировании.
Вывод: Очистка поля ввода после добавления элемента — это стандартная практика для улучшения пользовательского опыта. В React она реализуется через сброс состояния управляемого компонента. Этот подход рекомендуется использовать в любых формах, где требуется добавление данных, например, в списках задач, комментариях или формах обратной связи.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию