Удаление элемента из 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,
    });
  };
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
@i1yas
newArray = [
 ...todoData.slice(0, idx),
 ...todoData.slice(idx + 1)
]

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

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


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

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

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