扩展运算符更新对象数组

我有一个对象数组。在该数组中,我想更新单个对象,而在该对象中,我只想更新特定属性。我试过了:

setRequiredFields(prevRequiredFields => ([
            ...prevRequiredFields,prevRequiredFields.find(x => x.name = field) ?  {
                isValid: isValid,content: content,isUnchanged: false
            }
]));

但是没有用。必需的文件是一个具有以下结构的数组:

[{
    name: "Name",isValid: false,content: "",isUnchanged: true,tip: "Name cannot be empty",isValidCondition: notEmptyRegex,reportState: validateField
}]

我在这里要做的是仅更新该数组中一个特定对象的 isValidcontentisUnchanged。我怎样才能做到这一点?

akira_7_sendoh 回答:扩展运算符更新对象数组

如果您有一个对象数组,并且您想更新数组中某个对象的几个属性。那么你可以做这样的事情。

const index = state.findIndex(x => x.name === field);
if(index > -1) {
  const newState = [...state];
  newState[index] = { 
    ...newState[index],isValid: isValid,content: content,isUnchanged: false
  }
  setRequiredFields(newState);
}
  • 找到您要更新的对象的索引。
  • 在该对象内添加属性。
  • 更新反应状态。
本文链接:https://www.f2er.com/945.html

大家都在问