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拆分了状态,所以它不在一个对象中?