【React全家桶入门之四】加入表单验证
来源:互联网 发布:剑客软件抢购怎么样 编辑:程序博客网 时间:2024/06/06 03:02
我们的现在可以在应用里添加用户了。但是还存在不小的问题:
- 用户可以输入任意长的名字
- 用户可以输入任意的年龄
- 用户可以不选择性别
盲目信任用户输入的数据,会给系统埋下不小的隐患。这回我们就来把这隐患扼杀在摇篮之中。
表单验证无非就是对用户输入的数据进行有效性、非空性验证,验证失败会在相应的地方显示错误信息,并阻止用户提交表单。
我们需要记录每一个字段当前的有效状态,有效时隐藏错误信息,无效时显示错误信息。
而这个有效/无效,可以在表单值改变的时候进行判断。
我们对/src/pages/UserAdd.js
进行修改:
首先修改了state的结构,把每个表单的值都放到了一个form字段中,方便统一管理;然后每个表单的值都变为了一个包含valid和value还有error字段的对象,valid表示该值的有效状态,value表示该表单具体的值,error表示错误提示信息:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
在handleValueChange
方法中,根据参数field获取state中对应表单的对象,然后根据新的值value判断新的值是否有效,将新的值和新的有效状态更新到state里。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
在handleSubmit
方法中对每个字段的valid进行检测,如果有一个valid为false则直接return以中断提交操作。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
最后,也要对render
方法进行更新:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
来看一下最终效果:
基本的表单验证就完成了!
阅读全文
1 0
- 【React全家桶入门之四】加入表单验证
- 【React全家桶入门之四】加入表单验证
- 【React全家桶入门之五】组件化表单/表单控件
- React全家桶之NodeJs和Webpack(四)
- 【React全家桶入门之二】项目搭建
- 【React全家桶入门之三】基本的用户添加
- 【React全家桶入门之六】渲染用户列表
- 【React全家桶入门之七】提取布局组件
- 【React全家桶入门之CODE】项目代码与使用方法
- 【React全家桶入门之八】用户编辑与删除
- 【React全家桶入门之十】登录与身份认证
- 【React全家桶入门之十一】引入AntDesign组件库
- 【React全家桶入门之十二】Redux介绍
- 【React全家桶入门之十一】引入AntDesign组件库
- 【React全家桶入门之二】项目搭建
- 【React全家桶入门之三】基本的用户添加
- 【React全家桶入门之十】登录与身份认证
- React全家桶之React(一)
- Android自定义控件的自定义属性2种实现方式
- python3 爬虫 简单示例
- cgroup简单的操作
- windows sphinx 安装及使用
- 使用对称加密aes对文件进行zip加密解密
- 【React全家桶入门之四】加入表单验证
- 关于从myeclipse里面的SVN导入项目,报错问题的解决办法
- 5 Tesseract-ocr 系列 : 使用 jTessBoxEditor,结合 tesseract-ocr-3.4 进行训练、识别
- 在centos7.*上安装mysql(阿里云主机)
- python 验证码识别
- QT下的并行框架
- mybatis、jdbc调用存储过程
- Lua中module的用法
- 关闭项目