Страницы

Поиск по вопросам

среда, 4 марта 2020 г.

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

#javascript #reactjs


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

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


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


Ответы

Ответ 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. Это же метод объекта, не просто функция.

Комментариев нет:

Отправить комментарий