<textarea>
El componente <textarea> que viene integrado en el navegador te permite renderizar un input de texto multilínea.
<textarea />Referencia
<textarea>
Para mostrar un text area, renderiza el componente <textarea> que viene integrado en el navegador.
<textarea name="postContent" />Props
<textarea> soporta todas las props comunes de los elementos.
Puedes hacer un text area controlado pasando la prop value:
value: Un string. Controla el texto dentro del text area.
Cuando pasas value, también debes pasar un controlador onChange que actualice el valor proporcionado.
En cambio, si tu <textarea> no es controlado, puedes pasar la prop defaultValue:
defaultValue: Un string. Especifica el valor inicial para un text area.
Estas props de <textarea> son relevantes tanto para text areas controlados como no controlados:
autoComplete: Puede ser'on'u'off'. Especifica el comportamiento de autocompletar.autoFocus: Un booleano. Si estrue, React enfocará el elemento en el montaje.children:<textarea>no acepta hijos. Para establecer el valor inicial, utilizadefaultValue.cols: Un número. Especifica el ancho por defecto en anchos promedio de caracteres. Por defecto es20.disabled: Un booleano. Si estrue, el input no será interactivo y aparecerá atenuado.form: Un string. Especifica eliddel<form>al que este input pertenece. Si es omitido, es el formulario padre más cercano.maxLength: Un número. Especifica la longitud máxima del texto.minLength: Un número. Especifica la longitud mínima del texto.name: Un string. Especifica el nombre para este input que es enviado con el formulario.onChange: Una función controladora deevento. Requerida para text areas controlados. Es ejecutada inmediatamente cuando el valor del input es modificado por el usuario (por ejemplo, es ejecutada con cada pulsación de tecla). Se comporta como el eventoinputdel navegador.onChangeCapture: Una versión deonChangeque es ejecutada en la fase de captura.onInput: Una función controladora deevento. Es ejecutada inmediatamente cuando el valor es cambiado por el usuario. Por razones históricas, en React es idiomático usaronChangeen su lugar, el cual funciona de manera similar.onInputCapture: Una versión deonInputque es ejecutada en la fase de captura.onInvalid: Una función controladora deevento. Es ejecutada si la validación de un input fracasa al enviar el formulario. A diferencia del eventoinvalidque viene integrado, el eventoonInvalidde React se propaga.onInvalidCapture: Una versión deonInvalidque es ejecutado en la fase de captura.onSelect: Una función controladora deevento. Es ejecutada después de que la selección dentro de<textarea>cambia. React extiende el eventoonSelectpara que también sea ejecutado para selecciones vacías y en ediciones (las cuales puede afectar la selección).onSelectCapture: Una versión deonSelectque es ejecutada en la fase de captura.placeholder: Un string. Mostrado en un color atenuado cuando el valor del text area está vacío.readOnly: Un booleano. Si estrue, el text area no puede ser editado por el usuario.required: Un booleano. Si estrue, el valor debe ser proporcionado para que el formulario sea enviado.rows: Un número. Especifica la altura por defecto en promedio de altura de carácter. El valor por defecto es2.wrap: Puede ser'hard','soft', u'off'. Especifica cómo debe envolverse el texto al enviar un formulario.
Advertencias
- No es permitido pasar un hijo como
<textarea>algo</textarea>. UsadefaultValuepara el contenido inicial. - Si un text area recibe una prop
valuestring, este será tratado como controlado. - Un text area no puede ser controlado y no controlado a la vez.
- Un text area no puede alternar entre ser controlado o no controlado a lo largo de su vida.
- Todo text area controlado necesita un controlador de evento
onChangeque actualice su valor de manera síncrona.
Uso
Mostrar un text area
Renderiza <textarea> para mostrar un text area. Puedes especificar su tamaño por defecto con los atributos rows y cols, pero por defecto el usuario será capaz de modificar su tamaño. Para deshabilitar la modificación de tamaño, puedes especificar resize: none en el CSS.
export default function NewPost() { return ( <label> Escribe tu mensaje: <textarea name="postContent" rows={4} cols={40} /> </label> ); }
Proporcionar un label para un text area
Típicamente, colocarás todos los <textarea> dentro de una etiqueta <label>. Esto le indica al navegador que este label está asociado con ese text area. Cuando el usuario haga click en el label, el navegador enfocará el text area. Esto también es esencial para accesibilidad: un lector de pantallas anunciará el texto del label cuando el usuario enfoque el text area.
Si no puedes anidar el <textarea> dentro de un <label>, asócialos pasando el mismo identificador a <textarea id> y <label htmlFor>. Para evitar conflictos entre instancias de un componente, genera un identificador con useId.
import { useId } from 'react'; export default function Form() { const postTextAreaId = useId(); return ( <> <label htmlFor={postTextAreaId}> Escribe tu mensaje: </label> <textarea id={postTextAreaId} name="postContent" rows={4} cols={40} /> </> ); }
Proporcionar un valor inicial para un text area
Opcionalmente puedes especificar el valor inicial de un text area. Pásalo a través de la prop defaultValue.
export default function EditPost() {