Я пытаюсь обновить свойство объекта, который хранится в массиве.
мое состояние выглядит примерно так:
state = {
todos: [
{
id: '1',
title: 'first item,
completed: false
},
{
id: '2',
title: 'second item,
completed: false
}
],
}
То, что я пытаюсь сделать, это доступвторой элемент в массиве 'todos' и обновите завершенное свойство на false -> true или true -> false.
У меня есть кнопка с обработчиком для обновления, и мой метод класса для обновления выглядитвот так:
onUpdate = (id) => {
const { todos } = this.state;
let i = todos.findIndex(todo => todo.id === id);
let status = todos[i].completed
let updatedTodo = {
...todos[i],
completed: !status
}
this.setState({
todos: [
...todos.slice(0, i),
updatedTodo,
...todos.slice(i + 1)
]
});
}
Хотя это работает, я хочу выяснить, есть ли более краткий способ достижения того же результата;Я пытался использовать Object.assign (), но это не сработало, потому что мои «задачи» - это массив, а не объект.Пожалуйста, просветите меня лучшим кодом!