@Meinerdi

Как иммутабельно изменить свойство в стейте?

Подскажите, пожалуйста, как иммутабельно изменить свойство "done" в стейте?

Есть такой коллбек, который принимает id таска:

onCompleteTask = (id) => {
    this.setState(state => {
      return {
        tasks: [...state.tasks]
      }
    })
  }


Стейт выглядит так:

this.state = {
      tasks: [
        {id: "asfasfasf", name: "Do something", done: false, date: null},
        {id: "asf23f", name: "Read something", done: true, date: null},
        {id: "f3f34fs", name: "Go for a walk", done: false, date: null},
      ]
    }
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
this.setState(({ tasks }) => ({
  tasks: tasks.map(n => проверяем, надо ли менять done у текущего элемента
    ? { ...n, done: новое значение для done }
    : n
  ),
}));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы