React Hooks:map函数内的setState挂钩

时间:2020-05-19 13:31:44

标签: javascript reactjs forms react-hooks setstate

我目前正在与表单争执setState的异步特性,我的预期行为是,当用户单击SubmitForm按钮时,它将检查状态内的所有表单值(如果该值为空),然后为其设置errorState特定的表单元素,以便出现错误消息

ignore null

我认为问题是由于setState异步引起的,所以在完成.map之后,它仅将errors对象内的最后一个值设置为true(因此errors.mobileNumber = true)。而不是使所有与条件匹配的值都为true。散布运算符{... errors}正在将这些值覆盖为初始的false值。如果values数组中的值为空?

请提供任何帮助

1 个答案:

答案 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);