Задать вопрос
maksipes
@maksipes

Как менять данные в массиве объектов не нарушая правила хорошего кода?

Снова вопрос о лучших практиках.

Допустим, имеются данные такого вида:
state.events = [
  {
    id: "item1",
    title: "Заплатить налог"
  },
  {
    id: "item2",
    title: "Спать спокойно"
  },
  {
    id: "item3",
    title: "Попить пива"
  }
];


Юзер изменил данные - например передумал и вместо "Попить пива" ввел "Попить водки".

Вызывается функция в которой должна произойти замена соответствующего значения.

Вопрос - как это сделать по реакт феншую?

Самый очевидный и очевидно не самый правильный способ:
// находим нужный объект в массиве по его id
let found= this.state.events.find(item => {
        return item.id === id;

// меняем присваиваем новое значени
if (found) {
        found.title= newValue;
      }

// чтобы вызвать обновление приложения
this.setState(this.state);


Мне кажется это не очень правильно.
  • Вопрос задан
  • 171 просмотр
Подписаться 2 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
И - иммутабельность:

this.setState(({ events }) => ({
  events: events.map(n => n.id === id ? { ...n, title: newTitle } : n),
}));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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