React ES6 Функції стрілок
Функції стрілок
Функції зі стрілками дозволяють нам писати коротший синтаксис функції:
Код стає коротшим! Якщо функція має лише одну інструкцію, й інструкція повертає значення, ви можете видалити дужки та ключове слово return
:
Приклад
Функції стрілок повертають значення за замовчуванням:
hello = () => "Hello World!";
Спробуйте самі »
Примітка: Це працює, лише якщо функція має тільки одну інструкцію.
Якщо у вас є параметри, ви передаєте їх у круглі дужки:
Фактично, якщо у вас є лише один параметр, ви також можете пропустити дужки:
Що про this
?
Обробка this
також відрізняється у функціях зі стрілками у порівнянні зі звичайними функціями.
Коротше кажучи, із функціями стрілок немає прив’язки this
.
У звичайних функціях ключове слово this
представляє об’єкт, який викликає функцію, якою може бути вікно, документ, кнопка чи щось інше.
З функціями стрілок ключове слово this
завжди представляє об’єкт, який визначив функцію стрілок.
Давайте розглянемо два приклади, щоб зрозуміти різницю.
Обидва приклади викликають метод двічі, спочатку під час завантаження сторінки та ще раз, коли користувач натискає кнопку.
У першому прикладі використовується звичайна функція, а в другому — функція зі стрілкою.
Результат показує, що перший приклад повертає два різні об’єкти (вікно та кнопку), а другий приклад двічі повертає об’єкт Header.
Приклад
У звичайній функції this
представляє об’єкт, який викликав функцію:
class Header {
constructor() {
this.color = "Red";
}
//Звичайна функція:
changeColor = function() {
document.getElementById("demo").innerHTML += this;
}
}
const myheader = new Header();
//Об’єкт вікна викликає функцію:
window.addEventListener("load", myheader.changeColor);
//Об’єкт кнопки викликає функцію:
document.getElementById("btn").addEventListener("click", myheader.changeColor);
Спробуйте самі »
Приклад
За допомогою функції зі стрілкою this
представляє об’єкт Header незалежно від того, хто викликав функцію:
class Header {
constructor() {
this.color = "Red";
}
//Функція стрілки:
changeColor = () => {
document.getElementById("demo").innerHTML += this;
}
}
const myheader = new Header();
//Об’єкт вікна викликає функцію:
window.addEventListener("load", myheader.changeColor);
//Об’єкт кнопки викликає функцію:
document.getElementById("btn").addEventListener("click", myheader.changeColor);
Спробуйте самі »
Пам’ятайте про ці відмінності, коли працюєте з функціями. Іноді поведінка звичайних функцій така, як ви хочете, якщо ні, використовуйте функції зі стрілками.