@NikFedoseev

Как правильно изменить состояние компонента в React.js?

Есть компонент. В этот компонент через пропсы передается новая заметка (объект с двумя полями "title", "text"). В созданной заметке на событие onClick вещается функция которая передает id через пропсы родительскому компоненту. У родительского компонента в состояниях хранится массив объектов, то есть заметок, id заметки равен номеру объекта в массиве. При попытке удалить какую нибудь заметку, пропадают все. А самая первая заметка которая под индексом 0 не удаляется. В чем может быть проблема? Неверное изменяю состояние?
При добавлении заметки, конкатенирую старый массив и новый. При удалении просто удаляю один объект из массива.
5b3baafb44c11049941709.png5b3baccb3f2b0638911884.png
  • Вопрос задан
  • 282 просмотра
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
Вы уверены что понимаете как работает метод splice? Его вызов возвращает массив удаленных элементов, а не массив из которого эти элементы удалены.
Варианты решения:
handleNoteDel = index => {
  const notes = [...this.state.notes];
  notes.splice(index, 1);
  this.setState({ notes });
}

или:
handleNoteDel = index => {
  this.setState({
    notes: this.state.notes.filter((_, i) => i !== index),
  });
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы