javascript - 密码确认和密码相同,但验证仍然触发 React 组件中的 JOI

标签 javascript reactjs validation frontend react-component

我创建了一个注册表单,但在尝试验证密码确认时出现了问题。我正在使用最新版本的 JOI-Browser。

我尝试了下面的代码,即使密码和密码确认具有相同的值,也会触发验证错误。

password: Joi.string()
      .min(5)
      .required(),
passwordConfirmation: Joi.ref("password")

这是我的状态对象:

password: "12345"
passwordConfirmation: "12345"
username: ""
errors: {…}
passwordConfirmation: "\"passwordConfirmation\" must be one of [ref:password]"

我花了几个小时尝试了几种方法并阅读了文档,但仍然没有运气,验证仍在触发,

我在此表单中进行了其他验证,它们工作正常。

最佳答案

我认为 Joi.ref 不应该这样使用。

我通常倾向于这样做:

const passwordConfirmation = Joi.string()
  .required()
  .valid(Joi.ref('password'))
  .options({
    language: {
      any: {
        allowOnly: '!!Passwords do not match',
      }
    } 
  })

如果您引用docs ,你会看到:

Note that references can only be used where explicitly supported such as in valid() or invalid() rules. If upwards (parents) references are needed, use object.assert().

关于javascript - 密码确认和密码相同,但验证仍然触发 React 组件中的 JOI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56779021/

相关文章:

javascript - 在 Android 上使用地理定位或 MapView react Native expo 项目错误

javascript - 如何修改此功能,以便将拱门堆叠在相机前面?

javascript - 对带有嵌套元素的禁用按钮做出 stopPropagation onClick react

javascript - 如何在reactjs中制作一个页面,该页面将保留在带有动态问题和选择的页面上?

javascript - FullCalendar - 单击第二个事件时设置事件颜色

java - 如何通过cordova exec在java中开发gps插件

meteor - 为什么应该将 React 与 Meteor 一起使用?

validation - JSF (PrimeFaces) 中的转换器与 SelectOneMenu : Validation Error

java - 如何验证sql查询语法?

javascript - 填写表单输入后仍然显示自定义消息