Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React:循环对象并更改某些属性_Javascript - Fatal编程技术网

Javascript React:循环对象并更改某些属性

Javascript React:循环对象并更改某些属性,javascript,Javascript,我有这样的想法: const [fields, setFields] = useState({ name: { value: '', error: '' }, lastName: { value: '', error: '' }, phone: { value: '', error: '' } }); 好的,在某个时刻,我想重置所有错误,所以我可以这样做: setFields(prev => { for (let

我有这样的想法:

const [fields, setFields] = useState({
  name: {
    value: '',
    error: ''
  },
  lastName: {
    value: '',
    error: ''
  },
  phone: {
    value: '',
    error: ''
  }
});
好的,在某个时刻,我想重置所有错误,所以我可以这样做:

setFields(prev => {
  for (let key in prev) prev[key].error = '';
  return prev;
});
但出于某种原因,这是行不通的

有人建议这样做,结果奏效了:

setFields(prev => {
    const copy = { ...prev };
    for (let key in copy) copy[key].error = '';
    return copy;
  });
您可以尝试以下方法:

const resetErrors = () => {
let newObject = {...fields};
Object.keys(newObject).map(key => {
  obj[key].error = ''
})
return newObject;
}
.
.
.
setFields(resetErrors());

具体来说,“这不起作用”是什么意思?你期望发生什么,然后发生了什么?考虑不修改状态数据吗?相反,创建一个新对象并返回抱歉,我应该澄清@ScottHunter,发生的是,它更新了状态,但不会触发组件的重新加载程序,idk Why Consider拆分了状态,所以它不在一个对象中?