我目前正在与表单争执setState的异步特性,我的预期行为是,当用户单击SubmitForm按钮时,它将检查状态内的所有表单值(如果该值为空),然后为其设置errorState特定的表单元素,以便出现错误消息
ignore null
我认为问题是由于setState异步引起的,所以在完成.map之后,它仅将errors对象内的最后一个值设置为true(因此errors.mobileNumber = true)。而不是使所有与条件匹配的值都为true。散布运算符{... errors}正在将这些值覆盖为初始的false值。如果values数组中的值为空?
请提供任何帮助
答案 0 :(得分:1)
我将通过映射值的条目一次构造整个新错误对象,然后您可以使用该对象调用setError
:
const values = {
firstName: 'first',
lastName: 'last',
id: '',
city: '',
};
const newErrors = Object.fromEntries(
Object.entries(values).map(
([key, val]) => [key, val === '']
)
);
console.log(newErrors);
// setError(newErrors);