Formularios en React Native: campos, validación y teclado

Guía de formularios y validación en React Native

Formularios en React Native: campos controlados y validación | We.Inc

Crea un formulario en React Native con TextInputs controlados, una única función validate, mensajes de error bajo cada campo y manejo del teclado. Prueba la validación en vivo en tu navegador.

Un formulario fiable en React Native necesita tres piezas: TextInputs controlados por el estado, una función validate que devuelve un error por campo y el manejo del teclado. Muestra cada mensaje cuando la persona haya salido de ese campo o haya pulsado enviar. Envuelve la pantalla en KeyboardAvoidingView y pon keyboardShouldPersistTaps="handled" en el ScrollView para que el botón de envío siga siendo accesible.

Piezas de un formulario en React Native

Las reglas de validación de esta página son JavaScript puro, así que la vista previa de abajo ejecuta exactamente la función que pegarías en tu pantalla de React Native. Rellena los campos, sal de ellos y pulsa Crear cuenta para ver cómo aparece y desaparece cada mensaje.

Preguntas frecuentes

¿Necesito una librería de formularios en React Native?

No. Unos pocos campos funcionan bien con useState y una función validate como la de esta página. Las librerías ayudan cuando un formulario tiene muchos campos, arrays anidados o comprobaciones asíncronas, y React Hook Form se describe a sí misma como compatible con la web y con React Native.

¿Cómo evito que el teclado tape mis campos?

Envuelve el formulario en KeyboardAvoidingView. Cambia su altura, su posición o su padding inferior para adaptarse al teclado; behavior="padding" es la opción habitual en iOS. keyboardVerticalOffset tiene en cuenta una cabecera situada sobre la vista y vale 0 por defecto.

¿Por qué mi botón de envío necesita dos toques?

keyboardShouldPersistTaps del ScrollView vale "never" por defecto, así que el primer toque solo cierra el teclado. Ponlo en "handled" y el botón recibirá el toque a la primera.

¿Cómo cierro el teclado después de enviar?

Invoca Keyboard.dismiss(), que según la documentación cierra el teclado activo y quita el foco.

Cuándo mostrar un error

Errores accesibles

Código de formulario para copiar

La función validate

JavaScript puro sin imports de React Native, así que funciona en tests, en la vista previa web y en un servidor.

Pantalla de registro con campos tocados y manejo del teclado

Un objeto values, un objeto touched y un componente auxiliar Field que muestra su error solo cuando corresponde.

Escribe tu nombre.

Escribe tu dirección de correo.

A esa dirección de correo le falta una @ o un dominio.

Usa al menos 8 caracteres.

Las dos contraseñas no coinciden.

Vista previa de la validación

Las comprobaciones ejecutan la función validate del código de abajo. Los mensajes aparecen al salir de un campo o al pulsar el botón.

Nombre

Contraseña

Confirmar contraseña

Crear cuenta

Todos los campos son válidos. Una aplicación real enviaría ahora los valores.

{n} campo(s) necesitan revisión.

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio