Объявление функции в setInterval в React

344
16 ноября 2017, 06:09

Во время изучения React обнаружил следующий код:

componentDidMount() {
    this.timerID = setInterval(
      () => this.tick(),
      1000
    );
}

Почему перед this.tick() стоят ()? Если я правильно понимаю это такой вид обьявления анонимной функции? Но ведь setInterval требует функцию на первом месте а tick() это метод данного класса, то есть и является функцией.

Answer 1

Стрелочные функции

Выражения стрелочных функций имеют более короткий синтаксис по сравнению с функциональными выражениями и лексически привязаны к значению this (но не привязаны к собственному this, arguments, super, или new.target).
Стрелочные функции всегда анонимные.

this.timerID = setInterval(
  () => this.tick(),
  1000
);

практически эквивалентно

let that = this;
this.timerID = setInterval(
  function () { return that.tick();},
  1000
);

Зачем нужно объявлять анонимную функцию для вызова другой функции?

Так короче, удобнее и нагляднее.
Другим корректным вариантом было бы setTimeout(this.tick.bind(this), 1000), иначе внутри tick не будет доступен объект по this. Это же метод объекта, не просто функция.

READ ALSO
RegExp валидность URL

RegExp валидность URL

Ребята, что нужно дописать, что бы передача параметров не могла начинаться с &, как во втором примере?

279
Снять выбор с radio button(JavaScript)

Снять выбор с radio button(JavaScript)

Есть 2 radio button в таблицы:

257
Сравнение массивов (javascript , jquery )

Сравнение массивов (javascript , jquery )

Добрый вечер, есть два массива, нужно сделать один массив, но чтобы значения не совпадали, те

481
QIWI API запрос истории платежей

QIWI API запрос истории платежей

Делаю такой запрос (JavaScript)

350