Я часто испытываю трудности с манипулированием определенным элементом в массиве в состоянии компонента React.Например:
state={
menus:[
{
id:1,
title: 'something',
'subtitle': 'another something',
switchOn: false
},
{
id:2,
title: 'something else',
'subtitle': 'another something else',
switchOn: false
},
]
}
Этот массив заполнен объектами, которые имеют различные свойства.Одним из таких свойств, конечно же, является уникальный идентификатор.Это то, что я недавно сделал, чтобы отредактировать свойство «switchOn» для элемента в соответствии с его идентификатором:
handleSwitchChange = (id) => {
const newMenusArray = this.state.menus.map((menu) => {
if (menu.id === id) {
return {
...menu,
switchOn: !menu.switchOn
};
} else {
return menu;
};
})
this.setState(()=>{
return{
menus: newMenusArray
}
})
}
Как видите, много проблем, просто изменить одно значение.В AngularJS (1) я бы просто использовал тот факт, что объекты передаются по ссылке, и непосредственно изменял бы его, без какой-либо суеты ES6.
Возможно ли, что я что-то упустил, и есть многоболее простой подход для борьбы с этим?Любой пример будет принята с благодарностью.