以下功能是否相同?我以redux形式使用它,因为我的表单只是一个字段,我想我不需要循环,但是第二个字段的行为不一样,我想知道为什么
//working
export default values => {
let errors = {}
;['email'].forEach(field => {
if (!values.email) {
errors.email = `Email cannot be empty.`
}
})
return errors
}
与
//is this the same as the above?
export default values => {
if (!values.email) {
return {
errors: {
email: `Email cannot be empty.`
}
}
}
}
答案 0 :(得分:0)
这两个功能 在功能上不相同。
您的第一个函数始终返回一个对象:
export default values => {
let errors = {} // this errors object is always returned, regardless
// of the validity of fields
;['email'].forEach(field => {
if (!values.email) {
errors.email = `Email cannot be empty.`
}
})
return errors // Object always gets returned
}
您的第二个功能,仅在values.email
为假时返回对象:
export default values => {
if (!values.email) {
// Result only returned if !values.email
return {
errors: {
email: `Email cannot be empty.`
}
}
}
// If values.email is "truthy", then undefined is returned
}
总而言之,如果values.email
为假,则第二个函数返回定义的结果,如果values.email
为真,则第二个函数返回定义的结果,这与您的第一个函数不同,后者在所有情况下都返回定义的结果。 / p>
您可以考虑对第二个功能进行以下更改,以使其行为与第一个功能相似:
export default values => {
if (!values.email) {
return {
errors: {
email: `Email cannot be empty.`
}
}
}
// If values.email is "truthy", then return empty error object
return {}
}