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

Удаление элемента из 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,
    });
  };
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 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 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽