简单介绍 React Native 整合 Formik 实现表单校验
Formik 是 React 和 React Native 开源表单库,Formik 负责处理重复且烦人的事情——跟踪值/错误/访问的字段、编排验证和处理提交——所以您不必这样做。而简化字段校验的话我们可以使用yup工具来实现。
首先安装Formik 和 Yup
npm i formik
npm i yup
Formik 与 React Native 简单实例
首先我们先实现一个简单的实例,体验一下Formik框架的使用过程。
export default function FormikCheck() {return (<View style={styles.container}><Text style={styles.mainTitle}>表单校验</Text><FormikinitialValues={{ email: "" }}onSubmit={(values) => console.log(values)}>{/* 渲染属性 */}{({ handleChange, handleBlur, handleSubmit, values }) => (<View><TextInputstyle={styles.inputItem}onChangeText={handleChange("email")}onBlur={handleBlur("email")}value={values.email}/><Button onPress={() => handleSubmit()} title="提交表单" /></View>)}</Formik></View>);
}const styles = StyleSheet.create({container: {flex: 1,padding: 10,},mainTitle: {fontSize: 20,paddingBottom: 10,borderBottomWidth: 1,borderBottomColor: "#e3e3e3",marginBottom: 10,},inputItem: {padding: 10,borderBottomWidth: 1,borderBottomColor: "#e3e3e3",marginBottom: 10,},
});
Formik 常用属性和方法说明
通过上述的例子可以看到,我们使用的是Formik框架中的Formik组件来包裹表单元素从而进行表单的是有相关操作。
Formik组件每个渲染方法常用的属性有如下几个:
| 属性 | 类型 | 说明 |
|---|---|---|
| errors | { [field: string]: string } | 表单错误信息,所有表单对应的字段校验错误信息都在这个对象中 |
| handleReset | () => void | 重置处理程序。将表单重置为其初始状态 |
| handleSubmit | (e: React.FormEvent) => void | 提交处理程序 |
Formik组件常用的方法和属性有如下几个:
| 方法 / 属性 | 参数 | 说明 |
|---|---|---|
| initialValues | Values | 表单的初始字段值 |
| validationSchema | Schema 或者 (() => Schema) | Yup 模式或返回 Yup 模式的函数。这用于验证。错误通过键映射到内部组件的错误。它的键应该与值的键匹配。 |
| onReset | (values: Values, formikBag: FormikBag) => void | 表单重置处理程序 |
| onSubmit | (values: Values, formikBag: FormikBag) => void Promise | 表单提交处理程序 |
Formik 与 yup 一起使用进行表单校验
Formik框架只是为我们简化表单的操作,当出现表单字段特别多的时候,我们一个一个字段进行表单字段值的校验这很麻烦,所以我们可以使用yup工具来帮我们简化校验流程。具体实例如下:
const userSchema = Yup.object().shape({email: Yup.string().email("Invalid email address"),
});export default function FormikCheck() {return (<View style={styles.container}><Text style={styles.mainTitle}>表单校验</Text><FormikinitialValues={{ email: "" }}onSubmit={(values) => console.log(values)}validationSchema={userSchema}>{/* 渲染参数 */}{({handleChange,errors,handleSubmit,values,dirty,handleReset,}) => (<View><TextInputstyle={styles.inputItem}onChangeText={handleChange("email")}value={values.email}/>{errors.email ? <Text>{errors.email}</Text> : ""}<ButtononPress={() => {console.log(dirty);handleSubmit();}}title="提交表单"/><Button onPress={() => handleReset()} title="重置" /></View>)}</Formik></View>);
}
相关文章:
简单介绍 React Native 整合 Formik 实现表单校验
Formik 是 React 和 React Native 开源表单库,Formik 负责处理重复且烦人的事情——跟踪值/错误/访问的字段、编排验证和处理提交——所以您不必这样做。而简化字段校验的话我们可以使用yup工具来实现。 首先安装Formik 和 Yup npm i formik npm i yupFormik 与 R…...
蓝帽杯半决赛2022
手机取证_1 iPhone手机的iBoot固件版本号:(答案参考格式:iBoot-1.1.1) 直接通过盘古石取证 打开 取证大师和火眼不知道为什么都无法提取这个 手机取证_2 该手机制作完备份UTC8的时间(非提取时间):(答案…...
电路学习+硬件每日学习十个知识点(40)23.8.20 (希腊字母读音,阶跃信号和冲激信号的关系式,信号的波形变换,信号的基本运算,卷积积分,卷积和)
文章目录 1.信号具有时间特性和频率特性。2.模拟转数字,抽样、量化、编码3.阶跃信号和冲激信号4.信号的波形变换(时移、折叠、尺度变换)5.信号的基本运算(加减、相乘、微分与积分、差分与累加)5.1 相加减5.2 相乘5.3 微…...
Python——列表(list)推导式
本文基于python3。 目录 1、Python推导式2、列表(list)推导式2.1、定义2.2、实际操作2.2.1、一个表达式,后面为一个 for 子句2.2.2、一个表达式,后面为一个 for 子句,然后,跟着if 子句。2.2.3、一个表达式,后面为一个…...
代码随想录算法训练营day43 | LeetCode 1049. 最后一块石头的重量 II 494. 目标和 474. 一和零
1049. 最后一块石头的重量 II(题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台) 思路:把全部石头重量加起来,然后除以二,就等于背包的最大容量。然后就可以按照背包问题…...
Linux安装jdk、mysql、并部署Springboot项目
😜作 者:是江迪呀✒️本文关键词:Linux、环境安装、JDK安装、MySQL、MySQL安装☀️每日 一言:知行合一! 文章目录 一、前言二、安装步骤2.1 安装JDK(1)创建文件夹(便于后…...
tomcat更改端口号和隐藏端口号
因为默认端口:8080不会自动隐藏,因此为了更显格调需要将其改为:80 进入tomcat的server文件 将其改为80,之后将tomcat重新启动即可 tomcat启动流程 [rootshang ~]# cd /usr/local/tomcat/apache-tomcat-8.5.92 [rootshang apache-tomcat-8.5.92]# cd b…...
生信分析Python实战练习 2 | 视频19
开源生信 Python教程 生信专用简明 Python 文字和视频教程 源码在:https://github.com/Tong-Chen/Bioinfo_course_python 目录 背景介绍 编程开篇为什么学习Python如何安装Python如何运行Python命令和脚本使用什么编辑器写Python脚本Python程序事例Python基本语法 数…...
wps设置其中几页为横版
问题:写文档的时候,有些表格列数太多,页面纵向显示内容不完整,可以给它改成横向显示。 将鼠标放在表格上一页的底部,点击‘插入-分页-下一页分节符’。 将鼠标放在表格页面的底部,点击‘插入-分页-下一页分…...
如何在Ubuntu 22.04上安装PHP 8.1并设置本地开发环境
引言 PHP是一种流行的服务器脚本语言,用于创建动态和交互式web页面。开始使用你选择的语言是学习编程的第一步。 本教程将指导您在Ubuntu上安装PHP 8.1,并通过命令行设置本地编程环境。您还将安装依赖管理器Composer,并通过运行脚本来测试您…...
wazuh安装与使用
目录 一、wazuh安装 二、wazuh使用 一、wazuh安装 下载:https://wazuh.com 可以直接安装OVA这个,然后导入到Linux中就可以使用了。 导入完毕后开启,使用远程连接工具进行连接,出现以下画面则成功了。 之后可以看一下图形化界面…...
Vue 3 常见面试题汇总
前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 前言 最近两年许多大厂都在实行“降本增效”、“优化组织架构”,然后“为社会输送了大量人才”,今年(2023ÿ…...
Docker是什么?详谈它的框架、使用场景、优势
作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、什么是 Docker? 二、Docker 的架构 1、Docker客户端 2、Docker守护进程 3、Docker镜像 4、Docker容器 5、Docker…...
neo4j
UNWIND 将列表里的值展开 CREATE (N0:Person {name: Anders}) CREATE (N1:Person {name: Becky}) CREATE (N2:Person {name: Cesar}) CREATE (N3:Person {name: Dilshad}) CREATE (N4:Person {name: George}) CREATE (N5:Person {name: Filipa})CREATE (N0)-[:KNOWS]->(N3)…...
【项目 计网5】 4.15 TCP通信实现(服务器端)4.16 TCP通信实现(客户端)
文章目录 4.15 TCP通信实现(服务器端)4.16 TCP通信实现(客户端) 4.15 TCP通信实现(服务器端) // TCP 通信的服务器端// TCP 通信的服务器端 #include <stdio.h> #include <arpa/inet.h> #incl…...
windows可视化界面管理服务器上的env文件
需求:在 Windows 环境中通过可视化界面编辑位于 Linux 主机上的 env 文件的情况,我现在环境是windows环境,我的env文件在linux的192.168.20.124上,用户是op,密码是op,文件绝对路径是/home/op/compose/env …...
自然语言处理在智能客服和聊天机器人中的应用
文章目录 1. 引言2. NLP基础2.1 词法分析2.2 语法分析2.3 语义理解2.4 情感分析 3. 智能客服中的应用3.1 自动问答3.2 意图识别3.3 情感分析与情绪识别 4. 聊天机器人中的应用4.1 对话生成4.2 上下文理解 5. 技术原理与挑战5.1 语言模型5.2 数据质量和多样性5.3 上下文理解 6. …...
为什么不建议使用@Async注解创建线程
1 前言 在很久很久之前,我有一段痛苦的记忆。那种被故障所驱使的感觉,在我脑海里久久无法驱散。 原因无它,有小伙伴开启了线程池的暴力使用模式。没错,就是下面这篇文章。 夺命故障 ! 炸出了投资人! 我有必要简单的…...
更新Ubuntu18.04上的CUDA和GCC
问题: 有一台服务器的GPU是1080,有八张卡,已经好久没有人用了。cuda版本是10.1,我现在拿来复现一些论文的模型,经常遇到版本依赖问题,报错Driver is too old。所以要更新一下驱动。遇到的主要问题是gcc版本也太低了&am…...
算法通过村第6关【青铜】| 如何通过中序和后序遍历恢复二叉树
中序:3 4 8 6 7 5 2 1 10 9 11 15 13 14 12 后序:8 7 6 5 4 3 2 10 15 14 13 12 11 9 1 通过这两个遍历顺序恢复二叉树 首先我们知道中序遍历顺序左中右,后序遍历顺序左右中 第一步: 由后序遍历确定根结点为1 > 由中序遍历…...
精益生产方式的核心功能拆解:精益生产方式如何解决多品种小批量场景下的库存积压难题
在当前制造业从“少品种大批量”向“多品种小批量”急剧转型的背景下,精益生产方式已成为企业打破库存僵局的唯一出路,它通过准时化拉动和消除浪费的核心逻辑,精准解决了传统模式下因预测失效导致的严重库存积压问题;面对多变的订…...
前端微前端架构:别再把所有功能都放在一个应用里了
前端微前端架构:别再把所有功能都放在一个应用里了 各位前端同行,咱们今天聊聊前端微前端架构。别告诉我你还在把所有功能都放在一个应用里,那感觉就像在一个房间里放了所有家具。 为什么你需要微前端架构 最近看到一个项目,单页应…...
VRM-Addon-for-Blender:虚拟角色创作全流程指南
VRM-Addon-for-Blender:虚拟角色创作全流程指南 【免费下载链接】VRM-Addon-for-Blender VRM Importer, Exporter and Utilities for Blender 2.93 or later 项目地址: https://gitcode.com/gh_mirrors/vr/VRM-Addon-for-Blender VRM-Addon-for-Blender是一款…...
Qwen3-VL-WEBUI新手教程:无需编程,用WebUI轻松玩转多模态AI
Qwen3-VL-WEBUI新手教程:无需编程,用WebUI轻松玩转多模态AI 1. 什么是Qwen3-VL-WEBUI? Qwen3-VL-WEBUI是阿里云推出的一个开箱即用的多模态AI工具,内置了目前Qwen系列中最强大的视觉语言模型Qwen3-VL-4B-Instruct。这个镜像最大…...
智慧医疗泡罩药板药片缺失缺陷检测数据集VOC+YOLO格式1300张3类别
注意数据集中图片大约500张是原图剩余为增强图片数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):1300标注数量(xml文件个数):1300…...
Obsidian移动端深度评测:安卓/iOS同步技巧+5个必装生产力插件
Obsidian移动端深度评测:安卓/iOS同步技巧5个必装生产力插件 在移动办公场景下,Obsidian作为一款强大的知识管理工具,其跨平台能力与插件生态为商务人士和学生群体提供了独特的价值。本文将深入解析Obsidian在Android和iOS平台的核心差异&…...
告别网络依赖:用这个开源工具+高德离线包,5步搞定前端地图离线展示
前端开发者的离线地图解决方案:5步实现高德地图本地化部署 在紧急演示、内网开发或网络不稳定的环境中,依赖在线地图服务往往成为前端开发的痛点。我曾参与过一个政府内网项目,现场演示时因网络权限问题导致地图无法加载,最后不得…...
AI 与大模型相关
一、 AI 与大模型相关 1.1 Agent(智能体) 定义:具备自主规划、工具调用、记忆管理、任务执行能力的 AI 实体,能主动完成复杂目标。 核心能力:拆解任务、调用 API / 工具、自主决策、持久记忆、后台执行。 区别&am…...
B站视频下载终极指南:BilibiliDown的完整使用教程
B站视频下载终极指南:BilibiliDown的完整使用教程 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bi…...
OpenClaw技能调试:GLM-4.7-Flash功能开发排错指南
OpenClaw技能调试:GLM-4.7-Flash功能开发排错指南 1. 为什么需要关注技能调试 上周我在为团队开发一个基于GLM-4.7-Flash的自动化周报生成技能时,遇到了一个棘手的问题:技能在本地测试时运行完美,但部署到OpenClaw后却频繁超时。…...
