Manejo de Formularios con react-native-use-form-lite

  ¿Qué es react-hook-form?

react-native-use-form-lite es una librería moderna, liviana y sencilla para manejar formularios en React Native de manera sencilla y eficaz.

bash
npm install react-native-use-form-lite
# Si usas Picker
npm install @react-native-picker/picker

📦 Uso básico

En realidad, es muy sencillo de usar. Solo necesitas importar la librería y usarlo en tu componente.

jsx
import {
View,
TextInput,
Switch,
Button,
Text,
StyleSheet,
Platform,
} from 'react-native';
import { Picker } from '@react-native-picker/picker';
import { useFormLite } from 'react-native-use-form-lite';

const MyForm = () => {
const { formData, register, resetForm, getEmptyFields } = useFormLite({
  name: '',
  email: '',
  isActive: false,
  selectedOption: '',
});

const handleSubmit = () => {
  console.log(formData);
  const emptyFields = getEmptyFields();
  console.log('Campos vacíos:', emptyFields);
};

return (
  <View style={styles.container}>
    <Text style={styles.title}>Formulario Moderno</Text>

    <TextInput
      placeholder="Nombre"
      style={styles.input}
      {...register('name')}
    />

    <TextInput
      placeholder="Correo electrónico"
      style={styles.input}
      keyboardType="email-address"
      {...register('email')}
    />

    <View style={styles.switchContainer}>
      <Text style={styles.label}>¿Activo?</Text>
      <Switch {...register('isActive', { type: 'switch' })} />
    </View>

    <Picker
      style={styles.picker}
      {...register('selectedOption', { type: 'select' })}
    >
      <Picker.Item label="Seleccione un país" value="" />
      <Picker.Item label="Colombia" value="CO" />
      <Picker.Item label="México" value="MX" />
      <Picker.Item label="Argentina" value="AR" />
    </Picker>

    <View style={styles.buttonContainer}>
      <Button title="Enviar" onPress={handleSubmit} color="#4A90E2" />
    </View>
    <View style={styles.buttonContainer}>
      <Button title="Resetear" onPress={resetForm} color="#FF3B30" />
    </View>
  </View>
);
};

const styles = StyleSheet.create({
container: {
  padding: 20,
  backgroundColor: '#F9F9F9',
  flex: 1,
  justifyContent: 'center',
},
title: {
  fontSize: 24,
  fontWeight: '700',
  color: '#333',
  marginBottom: 20,
  textAlign: 'center',
},
input: {
  borderWidth: 1,
  borderColor: '#CCC',
  borderRadius: 8,
  padding: 10,
  marginBottom: 16,
  backgroundColor: '#FFF',
},
switchContainer: {
  flexDirection: 'row',
  alignItems: 'center',
  marginBottom: 16,
  justifyContent: 'space-between',
},
label: {
  fontSize: 16,
  color: '#333',
},
picker: {
  borderWidth: 1,
  borderColor: '#CCC',
  borderRadius: 8,
  backgroundColor: Platform.OS === 'android' ? '#FFF' : 'transparent',
  marginBottom: 16,
},
buttonContainer: {
  marginBottom: 12,
  borderRadius: 8,
  overflow: 'hidden',
},
});

export default MyForm;

Acontinuación, un ejemplo práctico de cómo usar react-native-use-form-lite en un componente de React Native:

🔧 API del Hook

formData

Contiene el estado actual de todos los campos registrados.

register(fieldName, options?)

Asocia un input al estado del formulario.

  • TextInput: type: 'text' (por defecto)
  • Switch: type: 'switch'
  • Picker: type: 'select'

resetForm()

Reinicia el formulario a su estado inicial.

getEmptyFields()

Devuelve un array con los nombres de los campos que están vacíos.

🧠 Ventajas

  • Sin necesidad de escribir múltiples funciones onChange.
  • Soporta múltiples tipos de inputs.
  • Ideal para formularios pequeños y medianos.
  • Sin dependencias externas innecesarias.
  • Escrito en TypeScript.

Acontinuación, un ejemplo práctico de cómo usar react-native-use-form-lite en un componente de React Native: