【发布时间】: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