我的react开发笔记 - 基于antd的表单验证
无论是react还是vue,表单在提交之前都需要对其中的输入进行验证,比如判断必填项是否填写或者输入是否符合规范。因为本文使用基于react的界面库antd进行开发,因此在这里记录一下antd进行form验证的简单方法。
-- By Brisk yu
场景:在登录页面有两个输入框,分别获取用户的用户名和密码,如下所示:
从图中可以看出,该form包含三个item,分别是两个input和一个button。显然,该场景下需要进行输入校验的是两个input。
首先添加一个简单的校验规则:账号和密码是必填项,如果没有填写就给予提示。
一 当input内容改变时进行校验
通过在对应的item中添加rules属性来实现,对应代码如下:
这样此时当input中内容改变时便会触发校验。rules中规定的校验规则,这里只简单的判断是否填写,后续也可以添加自定义校验规则。如果没有填写,则输出messsage中的内容。
二 点击“登录”按钮时验证
当点击“登录”按钮时同样需要对表单进行验证,只有验证通过了才能继续进行后续操作,比如与后台交互。这里需要用到Form的validateFields方法。
1)通过useRef这个Hook定义一个Ref。在react中,ref就类似于DOM的id。虽然react和vue都不建议直接对DOM进行操作(建议通过数据响应改变DOM),但是在一些情况下仍然需要操作DOM,这时候就可以通过ref来获取DOM。注:函数组件中不支持通过字符串获取ref,需要通过useRef。如下代码所示:
const loginFormRef = useRef(null);
这样就创建了一个ref对象。其中初始值为null
2)在form中引用介个ref,代码如下: