рефакторинг es5 в es6, чтобы избежать объявления временной переменной - PullRequest
0 голосов
/ 15 октября 2018

У меня есть кодовая база, где tempVar везде, как в примере ниже

const tempQuestions = this.state.questions
    const result = tempQuestions.filter(function(value, index1) {
      return index !== index1
    })
    this.setState({
      questions: result
    })

Как избежать такого случая?

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Это выглядит довольно просто:

this.setState({
  questions: this.state.questions.filter((q, i) => index !== i)
})

Использование splice сначала потребует клонирования массива, иначе setState не уведомит об изменении состояния.Таким образом, итерация необходима в любом случае, для этого filter имеет больше смысла, чем splice.

0 голосов
/ 15 октября 2018

Редактировать:

Поскольку вы знаете, какое значение индекса вы хотите удалить.Как упоминалось в @undefined, вы можете использовать метод Array.prototype.splice() для удаления значения, а не повторять весь массив

Проверьте следующее решение, которое удалит одно значение индекса

const { questions } = this.state;
const result = questions.slice();
result.splice(index, 1);
this.setState({
  questions: result
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...