【问题标题】:{abortEarly: false} is not working in Joi v17.6{abortEarly: false} 在 Joi v17.6 中不起作用
【发布时间】:2022-02-24 00:21:24
【问题描述】:

我正在创建一个登录表单并尝试使用 Joi 来设置架构。我目前有一条规则,用户名是字符串,密码是字符串。我使用了abortEarly: false,所以这两个错误都会在提交时得到验证。仅检测到带有错误消息的用户名。 abortEarly: false 不工作。如果这是版本问题,或者我的调用不正确,请告诉我:

class LoginForm extends Component {
  state = {
    account: {
    username: '',
    password: ''
    },
    errors: {}
    }

validate = () => {
  const { account } = this.state;
  const schema = Joi.object({
    username: Joi.string().label('Username'),
    password: Joi.string().label('Password')
  })
  const options = { abortEarly: false }
  const { error } = schema.validate(
    account,
    this.schema,
    options
  );
  if (!error) return null;
 
  const errors = {};
  for (let item of error.details)
    errors[item.path[0]] = item.message;
  return errors;
  }

如果还有其他更易于用于验证的行业标准工具,我也愿意学习。我只有两个月来学习 React。我附上了一张我的渲染在提交空白表格时的样子。用户名和密码都应该有错误消息。

【问题讨论】:

  • 回复:行业标准,还有Yup。我不知道它比 Joi 好还是坏——老实说,它们看起来非常相似。我个人使用 Yup 是因为它与 Formik 表单集成。

标签: reactjs validation frontend joi


【解决方案1】:

好的,没有人对此发表评论,但我通过将类转换为功能组件来修复它。不知道为什么会这样,如果有人能解释一下,我会喜欢的。但是,唉,我正在验证两个输入而不会提前中止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-05
    • 2014-10-01
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2013-09-20
    相关资源
    最近更新 更多