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

Удаление элемента из UI в React. Нужно ли передавать предыдущее состояние в setState?

Как будет правильнее? Так:

deleteItem = (id) => {
    this.setState(({todoData}) => {
      const idx = todoData.findIndex((el) => el.id === id);
      const newArray = [
        ...todoData.slice(0, idx),
        ...todoData.slice(idx + 1)
      ]

      return {
        todoData: newArray
      }
    })
  }


Или так:

deleteItem = (id) => {
    const todo = this.state.todoData.filter((todo) => {
      return todo.id !== id;
    });

    this.setState({
      todoData: todo,
    });
  };
  • Вопрос задан
  • 59 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Javascript.ru
    Курс по React
    5 недель
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
@i1yas
newArray = [
 ...todoData.slice(0, idx),
 ...todoData.slice(idx + 1)
]

Ну вот так я бы не советовал объединять массивы, лучше:

todoData.slice(0, idx).concat(todoData.slice(idx + 1))


Ну этот вариант скорее всего экономия на спичках, лучше использовать фильтр, если вы не оперируете каким-то невероятным количеством данных на клиенте (что уже странно).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽