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

Как обновить только один объект в стейт-массиве?

Добрый день.
Учу React, знания закрепляю практикой - пишу свое небольшое приложение, ToDo List.
Захотелось реализовать функционал обновления уже созданного пункта, но совершенно не могу понять, как сделать это правильно.

В качестве данных пока использую заготовку типа:
const initialItems = [
  { message: 'Задача 1' , key: 1 },
  { message: 'Задача 2' , key: 2 },
  { message: 'Задача 3' , key: 3 }
]


В разметке пишу:
...
{arrMessage.map(card, => (
  <Card
    card={card}
    // сюда из компонента Card передаю данные карточки
    cardTransfer={onItemClick}
    key={card.key}
  />
))}
...


Обработчик клика по элементу:
function onItemClick(card) {
  setButton('Update');
  setAreaVisible(true);
  setAreaValue(card.message);
  // пустота
}


При клике на элемент списка появляется textarea с уже записанными данными, но вот как перезаписать новые именно в тот самый объект - не смог разобраться.
Находил разные статьи, в том числе и эту (Массивы объектов в state — как обновлять?), но не понял ответа.

Объясните, пожалуйста.
  • Вопрос задан
  • 766 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ты не понял куска кода ?
onItemHintClick = (index, e) =>
  this.setState(({ items }) => ({
    items: [
      ...items,
      [index]: {
        ...items[index],
        htogle: !items[index].htogle,
      },
    ],
  }));

Ну так тебе не реакт учить надо а Javascript.
https://developer.mozilla.org/en-US/docs/Web/JavaS...
Ответ написан
Ваш ответ на вопрос

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

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