Md5引发的血案

在ant-design的Form表单使用rule校验的时候,有一个时间的输入项是根据条件显示隐藏的,在满足条件的时候,输入值已经符合校验规则后,点击保存页面没有反应!控制台报 input is invalid type 错误。

image

一开始以为是rules的校验规则不生效导致的,就去改校验规则的实现方法,然后发现还是不行。又仔细看了一下发现

image

input is invalid type 其实是输入的数据类型不符合校验规则所需要的类型导致的。 然后又去看该输入项的打印值,发现值是对的。

然后后面还有一段报错 component event handler,官方解释是

1、组件事件处理程序未正确定义
2、校验规则的函数中有作用域的问题
3、校验规则函数的返回值有问题
4、规则配置错误

按照上面的方法去一一查找后发现没有任何问题。。

到这为止,只觉得脑壳痛。

然后去搜了下这个报错,发现有个回答提到了md5加密的时候值为空或者不是字符串所以阻塞了rules的校验。我感觉很奇怪因为在该条件下密码字段是不用输入的,然后发现之前的逻辑是 顺序往下走的,因为password不需要输入默认值就是空,就导致了报错。

也是无语的不行。

给password加了一个非空判断,报错就消失了。

admin: {
    userName: adminName,
    phone: adminPhone,
    password: normalPassword ? md5((normalPassword)) : null,
},

问题解决后,心里一阵MMP。。