CursosEmpresasBlogLiveConfPrecios

Implementando Formik y Yup

Clase 4 de 21 • Curso de React Native: Formularios, Almacenamiento y Deploy

Clase anteriorSiguiente clase

Contenido del curso

Sistema de formularios

  • 1
    Descarga el código base del proyecto

    Descarga el código base del proyecto

    05:35 min
  • 2
    Pantalla de Mi cuenta

    Pantalla de Mi cuenta

    06:30 min
  • 3
    Formulario de Login

    Formulario de Login

    06:07 min

Sistema de formularios avanzados

  • 4
    Implementando Formik y Yup

    Implementando Formik y Yup

    Viendo ahora
  • 5
    Iniciando sesión

    Iniciando sesión

    05:35 min
  • 6
    useAuth: manejo de sesiones con Custom Hooks y React Context

    useAuth: manejo de sesiones con Custom Hooks y React Context

    14:41 min
  • 7
    Datos del usuario y logout

    Datos del usuario y logout

    11:13 min

Sistema de favoritos

  • 8
    Botón de añadir a favoritos

    Botón de añadir a favoritos

    07:14 min
  • 9
    Almacenando un Pokémon favorito con AsyncStorage

    Almacenando un Pokémon favorito con AsyncStorage

    13:05 min
  • 10
    Almacenando varios Pokémon favoritos

    Almacenando varios Pokémon favoritos

    03:55 min
  • 11
    Pantalla de favoritos

    Pantalla de favoritos

    08:21 min
  • 12
    Toggle en el botón de favoritos

    Toggle en el botón de favoritos

    03:19 min
  • 13
    Eliminar Pokémon de favoritos

    Eliminar Pokémon de favoritos

    08:44 min
  • 14
    Lista de Pokémon favoritos

    Lista de Pokémon favoritos

    10:21 min
  • 15
    Navegación hacia atrás en favoritos

    Navegación hacia atrás en favoritos

    03:03 min
  • 16
    Logout

    Logout

    04:17 min
  • 17
    Sincronizando información entre pantallas

    Sincronizando información entre pantallas

    04:11 min

Pre deploy

  • 18
    Configuración básica antes del BUILD

    Configuración básica antes del BUILD

    04:18 min
  • 19
    Cómo generar el APK y AAB para Android

    Cómo generar el APK y AAB para Android

    04:18 min
  • 20
    Cómo generar la app para iOS

    Cómo generar la app para iOS

    01:46 min
  • 21

    ¿Quieres cursos más avanzados de React Native?

    00:26 min
  • Tomar el examen del curso
    • Luis Alfredo Quispe Villca

      Luis Alfredo Quispe Villca

      student•
      hace 4 años

      Formik y Yup tambien sirven para react web normal, puede que sea un poco complicado a un inicio pero una vez que lo dominas te facilita las validaciones de los formularios

      Paúl Terán

      Paúl Terán

      student•
      hace 4 años

      Es súper bueno utilizar librerías de tercerros para hacer este tipo de validaciones, pero recuerden que también pueden crear su propia lógica de obtención de datos y validación de estos.

      Les comparto un custom hook para recibir los datos de los inputs y computarlos con sus correspondientes fields (sin Formik).

      Screen de ejemplo que implementa el customHook.

      const {onChange, form, isSuscribed} = useForm({ //Este es el objeto que recibirá mi custom hook name: '', email: '', phone: '', isSuscribed: false, }); <TextInput style={{...styles.textInput, color: colors.text}} placeholder="Type your name" placeholderTextColor='black' autoCapitalize='words' onChangeText={(value) => onChange(value, 'name')} /> <TextInput style={{...styles.textInput, color: colors.text}} placeholder="Type your email" placeholderTextColor='black' keyboardType="email-address" autoCapitalize='none' onChangeText={(value) => onChange(value, 'email')} />

      Custom Hook (con TypeScript) que recibe el objeto y hace la lógica para almacenar el valor con su correspondiente field. El field no es nada más que el referente a mi input, similar al name de un input en HTML.

      import { useState } from "react"; export const useForm = <T extends Object>(form: T) => { //console.log("The object is here:", form) const [state, setState] = useState(form); const onChange = <K extends Object>(value:K, field: keyof T) => { setState({ ...state, [field]:value }) } return { ...state, form: state, onChange } }
      José Padrón

      José Padrón

      student•
      hace 4 años

      Recomiendo mucho también React hook form, funciona tanto para web como para react native. Buenísimo, se puede aplicar las validaciones y muchas otras herramientas mas.

      react-hook-form.com

      Luis Alejandro Nieto Ruth

      Luis Alejandro Nieto Ruth

      student•
      hace 4 años

      En vez de usar funciones que devuelve objetos, se pueden usar simplementes objetos y funciona exactamente.

      const initialValues = { username: "", password: "", }
        Germán Edgardo Göhringer

        Germán Edgardo Göhringer

        student•
        hace 3 años

        El problema de eso, en este caso, es que quedaría lo siguiente:

        initialValues: initialValues,

        No queda muy claro de donde vienen la información. Creo que por eso el profe lo hizo con una función, para que haya diferencia.

      Gustavo Pú

      Gustavo Pú

      student•
      hace 3 años
      import React from "react"; import { StyleSheet, View, Text, TextInput, Button, Keyboard, } from "react-native"; import { useFormik } from "formik"; import * as Yup from "yup"; export default function LoginForm() { const formik = useFormik({ initialValues: initialValues(), validationSchema: Yup.object(validationSchema()), validateOnChange: false, onSubmit: (formValue) => { console.log("Formulario enviado..."); console.log(formValue); }, }); return ( <View> <Text style={styles.title}>Iniciar sesión</Text> <TextInput placeholder="Nombre de usuario" style={styles.input} autoCapitalize="none" value={formik.values.username} onChangeText={(text) => formik.setFieldValue("username", text)} /> <TextInput placeholder="Contraseña" style={styles.input} autoCapitalize="none" secureTextEntry={true} value={formik.values.password} onChangeText={(text) => formik.setFieldValue("password", text)} /> <Button title="Entrar" onPress={formik.handleSubmit} /> <Text style={styles.error}>{formik.errors.username}</Text> <Text style={styles.error}>{formik.errors.password}</Text> </View> ); } function initialValues() { return { username: "", password: "", }; } function validationSchema() { return { username: Yup.string().required("El usuario es obligatorio"), password: Yup.string().required("La contraseña es obligatoria"), }; } const styles = StyleSheet.create({ title: { textAlign: "center", fontSize: 28, fontWeight: "bold", marginTop: 50, marginBottom: 15, }, input: { height: 40, margin: 12, borderWidth: 1, padding: 10, borderRadius: 10, }, error: { textAlign: "center", color: "#f00", marginTop: 20, }, });
      Gilberto Santamaria

      Gilberto Santamaria

      student•
      hace un año

      A mi personalmente me gusta usar más react-hook-form que se puede usar tanto en web como en mobile y siento la documentación más completa, te dejo el recurso por si te interesa :

      React Hook Form - performant, flexible and extensible form library (react-hook-form.com)

      Isco Martínez

      Isco Martínez

      student•
      hace 4 años

      ¿Como obtengo datos de input anterior?, probé con formik.getFieldProps(), pero los valores lo tiene undefined

      José Fabián Beltrán Meza

      José Fabián Beltrán Meza

      student•
      hace 2 años

      Una pequeña función que te ayuda a mostrar todos los errores sin necesidad de estarlos llamando cada uno en un <Text> Lo que hacemos es tomar del objeto formik.errors cada uno de sus valores y los recorremos con map. De esta forma si son 20 campos pues bueno, ya te puedes imaginar.

      <Text style={styles.notifications}> { Object.values(formik.errors).map(el => `${el}. \n` } </Text>

      Resultado:

      ErrorsMap.jpg

      Kevin Parra Lopez

      Kevin Parra Lopez

      student•
      hace 3 años

      Si prefieren React-hook-form aca les dejo el link

      https://react-hook-form.com/get-started#ReactNative

      Migrant Cyborg

      Migrant Cyborg

      student•
      hace 4 años

      Es impresionante como esta saga de cursos me han hecho agarrarle mucho cariño a usar componentes de Clase de React. (SI, COMPONENTES DE CLASE). Como tambien evitar la instalación de paquetes como Lodash, Formik y Yup y hasta de usar Async/Await. Listeralmente todo se puede manejar con estados, promesas y lógica muy simple.

        Misael Valdez

        Misael Valdez

        student•
        hace 3 años

        Me parece genial que le quieras a las clases, pero también me da la impresión de que te queres quedar con lo viejo. Justamente para simplificar muchas cosas se crearon las "function components" y lo de las librerías es simplemente como reinventar la rueda. Para que reinventarla si ya existen librerías que lo hacen super bien!

        Germán Edgardo Göhringer

        Germán Edgardo Göhringer

        student•
        hace 3 años

        Opino lo mismo que @Misael. O sea, todo bien con querer hacer las cosas de otra forma, pero la realidad es que eso ya no se hace así. Los "class components" ya fueron reemplazados. Y sobre las librerías, si hay algo que ya está creado y probado, ¿para qué volver a crearlo?

      Alejandro Mejia Escobar

      Alejandro Mejia Escobar

      student•
      hace 3 años

      Cuando varias opciones de los elementos se repiten, estas pueden definirse como variables de objeto general. Por ejemplo, los inputs pueden definirse de la siguiente manera:

      const generalInputOptions = { placeholderTextColor: '#fff', style: { ...styles.inputs, backgroundColor: globalStyles.colors.grey200 }, autoCapitalize: "none" }; <TextInput {...generalInputOptions} placeholder="Username (user)" value={formik.values.username} onChangeText={(text) => formik.setFieldValue('username', text)} /> <TextInput {...generalInputOptions} placeholder="Password (123456)" secureTextEntry={true} value={formik.values.password} onChangeText={(text) => formik.setFieldValue('password', text)} />
      Ivan Gonzalez Gonzalez

      Ivan Gonzalez Gonzalez

      student•
      hace 4 años

      Comando para instalar Formik y Yup:

      yarn add formik yup
      JULIAN DANIEL FRANCO ALVARADO

      JULIAN DANIEL FRANCO ALVARADO

      student•
      hace 2 meses

      Otra alternativa mas light es react hook form es muy extensible si usas mucho los hooks en react, tambien sirve para react.

      David Rangel

      David Rangel

      student•
      hace 4 meses

      Les comparto mi repo, la diferencia es que en el uso react use form en lugar de formik y zod en lugar de yup:

      https://github.com/dr1602/poke-native/tree/feat/RN3/class4

      Daniel Ochoa

      Daniel Ochoa

      student•
      hace 2 años

      Para las personas que estan iniciando, les recomiendo usar estados y crear sus propias validaciones, en el entorno profesional a veces no permiten el uso de estos paquetes sea por cuestiones de seguridad u otros, por lo que es mejor usar lo propio.

      José Luis Caicedo Lara

      José Luis Caicedo Lara

      student•
      hace 3 años

      para los amantes de la optimizacion: Lo más optimizado es React hook forms porque Formik se renderiza mucho.

      Moises Abel Avila  Garcia

      Moises Abel Avila Garcia

      student•
      hace 3 años

      exelente

    Escuelas

    • Desarrollo Web
      • Fundamentos del Desarrollo Web Profesional
      • Diseño y Desarrollo Frontend
      • Desarrollo Frontend con JavaScript
      • Desarrollo Frontend con Vue.js
      • Desarrollo Frontend con Angular
      • Desarrollo Frontend con React.js
      • Desarrollo Backend con Node.js
      • Desarrollo Backend con Python
      • Desarrollo Backend con Java
      • Desarrollo Backend con PHP
      • Desarrollo Backend con Ruby
      • Bases de Datos para Web
      • Seguridad Web & API
      • Testing Automatizado y QA para Web
      • Arquitecturas Web Modernas y Escalabilidad
      • DevOps y Cloud para Desarrolladores Web
    • English Academy
      • Inglés Básico A1
      • Inglés Básico A2
      • Inglés Intermedio B1
      • Inglés Intermedio Alto B2
      • Inglés Avanzado C1
      • Inglés para Propósitos Específicos
      • Inglés de Negocios
    • Marketing Digital
      • Fundamentos de Marketing Digital
      • Marketing de Contenidos y Redacción Persuasiva
      • SEO y Posicionamiento Web
      • Social Media Marketing y Community Management
      • Publicidad Digital y Paid Media
      • Analítica Digital y Optimización (CRO)
      • Estrategia de Marketing y Growth
      • Marketing de Marca y Comunicación Estratégica
      • Marketing para E-commerce
      • Marketing B2B
      • Inteligencia Artificial Aplicada al Marketing
      • Automatización del Marketing
      • Marca Personal y Marketing Freelance
      • Ventas y Experiencia del Cliente
      • Creación de Contenido para Redes Sociales
    • Inteligencia Artificial y Data Science
      • Fundamentos de Data Science y AI
      • Análisis y Visualización de Datos
      • Machine Learning y Deep Learning
      • Data Engineer
      • Inteligencia Artificial para la Productividad
      • Desarrollo de Aplicaciones con IA
      • AI Software Engineer
    • Ciberseguridad
      • Fundamentos de Ciberseguridad
      • Hacking Ético y Pentesting (Red Team)
      • Análisis de Malware e Ingeniería Forense
      • Seguridad Defensiva y Cumplimiento (Blue Team)
      • Ciberseguridad Estratégica
    • Liderazgo y Habilidades Blandas
      • Fundamentos de Habilidades Profesionales
      • Liderazgo y Gestión de Equipos
      • Comunicación Avanzada y Oratoria
      • Negociación y Resolución de Conflictos
      • Inteligencia Emocional y Autogestión
      • Productividad y Herramientas Digitales
      • Gestión de Proyectos y Metodologías Ágiles
      • Desarrollo de Carrera y Marca Personal
      • Diversidad, Inclusión y Entorno Laboral Saludable
      • Filosofía y Estrategia para Líderes
    • Diseño de Producto y UX
      • Fundamentos de Diseño UX/UI
      • Investigación de Usuarios (UX Research)
      • Arquitectura de Información y Usabilidad
      • Diseño de Interfaces y Prototipado (UI Design)
      • Sistemas de Diseño y DesignOps
      • Redacción UX (UX Writing)
      • Creatividad e Innovación en Diseño
      • Diseño Accesible e Inclusivo
      • Diseño Asistido por Inteligencia Artificial
      • Gestión de Producto y Liderazgo en Diseño
      • Diseño de Interacciones Emergentes (VUI/VR)
      • Desarrollo Web para Diseñadores
      • Diseño y Prototipado No-Code
    • Contenido Audiovisual
      • Fundamentos de Producción Audiovisual
      • Producción de Video para Plataformas Digitales
      • Producción de Audio y Podcast
      • Fotografía y Diseño Gráfico para Contenido Digital
      • Motion Graphics y Animación
      • Contenido Interactivo y Realidad Aumentada
      • Estrategia, Marketing y Monetización de Contenidos
    • Desarrollo Móvil
      • Fundamentos de Desarrollo Móvil
      • Desarrollo Nativo Android con Kotlin
      • Desarrollo Nativo iOS con Swift
      • Desarrollo Multiplataforma con React Native
      • Desarrollo Multiplataforma con Flutter
      • Arquitectura y Patrones de Diseño Móvil
      • Integración de APIs y Persistencia Móvil
      • Testing y Despliegue en Móvil
      • Diseño UX/UI para Móviles
    • Diseño Gráfico y Arte Digital
      • Fundamentos del Diseño Gráfico y Digital
      • Diseño de Identidad Visual y Branding
      • Ilustración Digital y Arte Conceptual
      • Diseño Editorial y de Empaques
      • Motion Graphics y Animación 3D
      • Diseño Gráfico Asistido por Inteligencia Artificial
      • Creatividad e Innovación en Diseño
    • Programación
      • Fundamentos de Programación e Ingeniería de Software
      • Herramientas de IA para el trabajo
      • Matemáticas para Programación
      • Programación con Python
      • Programación con JavaScript
      • Programación con TypeScript
      • Programación Orientada a Objetos con Java
      • Desarrollo con C# y .NET
      • Programación con PHP
      • Programación con Go y Rust
      • Programación Móvil con Swift y Kotlin
      • Programación con C y C++
      • Administración Básica de Servidores Linux
    • Negocios
      • Fundamentos de Negocios y Emprendimiento
      • Estrategia y Crecimiento Empresarial
      • Finanzas Personales y Corporativas
      • Inversión en Mercados Financieros
      • Ventas, CRM y Experiencia del Cliente
      • Operaciones, Logística y E-commerce
      • Gestión de Proyectos y Metodologías Ágiles
      • Aspectos Legales y Cumplimiento
      • Habilidades Directivas y Crecimiento Profesional
      • Diversidad e Inclusión en el Entorno Laboral
      • Herramientas Digitales y Automatización para Negocios
    • Blockchain y Web3
      • Fundamentos de Blockchain y Web3
      • Desarrollo de Smart Contracts y dApps
      • Finanzas Descentralizadas (DeFi)
      • NFTs y Economía de Creadores
      • Seguridad Blockchain
      • Ecosistemas Blockchain Alternativos (No-EVM)
      • Producto, Marketing y Legal en Web3
    • Recursos Humanos
      • Fundamentos y Cultura Organizacional en RRHH
      • Atracción y Selección de Talento
      • Cultura y Employee Experience
      • Gestión y Desarrollo de Talento
      • Desarrollo y Evaluación de Liderazgo
      • Diversidad, Equidad e Inclusión
      • AI y Automatización en Recursos Humanos
      • Tecnología y Automatización en RRHH
    • Finanzas e Inversiones
      • Fundamentos de Finanzas Personales y Corporativas
      • Análisis y Valoración Financiera
      • Inversión y Mercados de Capitales
      • Finanzas Descentralizadas (DeFi) y Criptoactivos
      • Finanzas y Estrategia para Startups
      • Inteligencia Artificial Aplicada a Finanzas
      • Domina Excel
      • Financial Analyst
      • Conseguir trabajo en Finanzas e Inversiones
    • Startups
      • Fundamentos y Validación de Ideas
      • Estrategia de Negocio y Product-Market Fit
      • Desarrollo de Producto y Operaciones Lean
      • Finanzas, Legal y Fundraising
      • Marketing, Ventas y Growth para Startups
      • Cultura, Talento y Liderazgo
      • Finanzas y Operaciones en Ecommerce
      • Startups Web3 y Blockchain
      • Startups con Impacto Social
      • Expansión y Ecosistema Startup
    • Cloud Computing y DevOps
      • Fundamentos de Cloud y DevOps
      • Administración de Servidores Linux
      • Contenerización y Orquestación
      • Infraestructura como Código (IaC) y CI/CD
      • Amazon Web Services
      • Microsoft Azure
      • Serverless y Observabilidad
      • Certificaciones Cloud (Preparación)
      • Plataforma Cloud GCP

    Platzi y comunidad

    • Platzi Business
    • Live Classes
    • Lanzamientos
    • Executive Program
    • Trabaja con nosotros
    • Podcast

    Recursos

    • Manual de Marca

    Soporte

    • Preguntas Frecuentes
    • Contáctanos

    Legal

    • Términos y Condiciones
    • Privacidad
    • Tyc promociones
    Reconocimientos
    Reconocimientos
    Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
    Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
    Logo reconocimientoPrimera Startup EdTech · 2018
    Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
    Logo reconocimientoCEO Mejor Emprendedor del año · 2024
    De LATAM conpara el mundo
    YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads