Reactjs 更改某些特定的值以反映状态

Reactjs 更改某些特定的值以反映状态,reactjs,react-hooks,Reactjs,React Hooks,和checkboxHealthLabels文件: const [checkedHealth, setCheckedHealth] = useState(checkboxHealthLabels); const handleChangeHealth = (event) => { setCheckedHealth([ ...checkedHealth, [event.target.name]: event.target.checked, ]); }; 现在我只想更改一个对象,例如

checkboxHealthLabels
文件:

const [checkedHealth, setCheckedHealth] = useState(checkboxHealthLabels);

const handleChangeHealth = (event) => {
setCheckedHealth([
  ...checkedHealth,
  [event.target.name]: event.target.checked,
]);

};
现在我只想更改一个对象,例如:
{name:“无酒精”,选中:false},

其他值必须保持不变。如何执行此操作?

在数组中找到同名对象的索引,然后根据需要进行切换:

export const checkboxHealthLabels = [
   { name: "Alcohol-Free", checked: false },
   { name: "Celery-Free", checked: false },
   { name: "Dairy-Free", checked: false },
];

您也可以考虑将该状态作为一个对象(名称是对象属性)而不是数组,它可能更容易。代码>1:对象{name:“无酒精”,选中:true}​ 2:对象{name:“无酒精”,选中:false}​ 3:对象{name:“无芹菜”,选中:false}​哇,我输入了

。查找
而不是
。查找索引
非常感谢。现在开始工作了。但ı有一个新问题:“(关于您现在删除的注释)是的,这正是我所考虑的对象结构。唯一的问题是,您需要等待组件重新呈现才能看到更新的状态。请参阅
const handleChangeHealth = ({ target }) => {
  const { name } = target;
  const index = checkedHealth.findIndex(obj => obj.name === name);
  setCheckedHealth([
    ...checkedHealth.slice(0, index),
    { name, checked: target.checked },
    ...checkedHealth.slice(index + 1)
  ]);
};