所以我有一个validatePassword
函数可以执行一些特定于我们项目的验证。
目前,它返回一个对象,如下所示:
{
valid: boolean,
errors: array
}
所以实际使用看起来像:
const passwordValidation = validatePassword(value)
if (passwordValidation.valid === false) {
modifiedValidation.password.message = passwordValidation.errors
modifiedValidation.password.uiState = 'error'
formIsValid = false
}
有没有更好的方法来实现这一点,我不必将对象实例化为函数的结果然后用它来做事情?
例如:
if (validatePassword(value).validity === true)
但是,我不想每次都重新运行该函数来访问validatePassword(value)
的属性......
答案 0 :(得分:0)
我认为你的代码看起来很正常,如果你正是这样做的话。但是,如果您以非常类似的方式验证多个项目,则可以重构该部分,这样您就不必重复自己。
function validate(validationResult, target) {
if(validationResult.valid === false) {
target.message = validationResult.errors;
target.uiState = 'error';
}
return validationResult.valid !== false;
}
var formIsValid = [
validate(validatePassword(value), modifiedValidation.password),
validate(validateOtherField(otherValue), modifiedValidation.other)
].every(function(x) { return x; });