Работа с элементом <textarea> в React немного отличается от обычного HTML.
Основное отличие заключается в том, каким образом устанавливается значение текстового поля.
В HTML значение текстового поля располагается между открытием и закрытием тега <textarea>:
<textarea>
Содержимое текстового поля.
</textarea>
В React значение элемента <textarea> указывается в специальном атрибуте value, аналогично тому, как это делается для элемента <input>.
Мы воспользуемся хуком useState, чтобы управлять значением текстового поля:
Пример
React контролирует значение текстового поля через атрибут value:
import { createRoot } from 'react-dom/client'
import { useState } from 'react'
function MyForm() {
const [mytxt, setMytxt] = useState("");
function handleChange(e) {
setMytxt(e.target.value);
}
return (
<form>
<label>Введите текст здесь:
<textarea
value={mytxt}
onChange={handleChange}
/>
</label>
<p>Текущее значение: {mytxt}</p>
</form>
)
}
createRoot(document.getElementById('root')).render(
<MyForm />
);
Пояснение к примеру:
- Мы объявляем состояние
mytxtс помощью хукаuseState, инициализируя его пустой строкой. - Обработчик события
handleChangeобновляет состояние при изменении содержимого текстового поля. - Текущее значение текстового поля отображается ниже поля ввода, демонстрируя, что изменение отражается в состоянии компонента.
Изменяя значение текстового поля подобным образом, React способен воспринимать и обрабатывать <textarea> так же, как и другие элементы ввода.