Привет! Прежде чем мы углубимся в привязку обработчиков событий в React, нам нужно сначала понять ключевое слово this
.
this
ключевое слово - одна из вещей, которая сбивает с толку многих разработчиков. Меня тоже это долго смущало.
В этой статье я постараюсь максимально упростить понимание концепции.
Что это"?
Ключевое слово JavaScript this
относится к объекту, которому оно принадлежит.
Он имеет разные значения в зависимости от того, где он используется:
- В режиме по умолчанию
this
внутри обычной функции относится к глобальному объекту (т.е. окну в браузере)
- В строгом режиме
this
внутри обычной функцииundefined
.
- если функция как метод внутри объекта
this
ссылается на сам объект.
Что происходит, когда мы передаем метод как ссылку на переменную?
Когда мы передаем метод как ссылку на переменную, значение переменной будет обычной функцией.
Строка 8: мы передали метод объекта новой переменной с именем newPlace
строка 9: мы напечатали переменную newPlace
.
Значение переменной newPlace
- это функция (изображена в строках 10–12). Это обычная функция, поэтому ключевое слово this
в функции newPlace () будет относиться к глобальному объекту (в режиме по умолчанию) или undefined
(если включен строгий режим)
Привязка
Метод bind () используется для определения области действия ключевого слова this
.
→ Без привязки
Примечание: JavaScript назначит область this
объекту, предшествующему оператору точки (.) Перед вызовом функции, то есть media.status
из приведенного выше примера, и это причина, по которой status
вызывается без media
, заставляет 'this' потерять свой контекст.
→ С переплетом
Здесь мы явно связали область видимости ключевого слова this
функции status () с объектом {platform: ‘medium’}.
Полезные ссылки:
→ метод bind ():
Свяжите с помощью React
Если вы создавали компоненты в React и прикрепляли прослушиватели событий, то вы, вероятно, сталкивались с ситуацией использования bind
в функциях для передачи области видимости.
В приведенном выше примере мы просто передаем ссылку на this.handleClick
прослушивателю событий onClick.
Значение события onClick примерно такое:
ƒ handleClick () {
console.log (это);
}
Это обычная функция.
Класс ES6 по умолчанию использует «строгий режим», поэтому область действия ключевого слова this
указанной выше обычной функции будет неопределенной. Следовательно, необходимо привязать обработчик событий так, чтобы при каждом вызове обработчика событий он всегда ссылался на объект, к которому он привязан.
Полезные ссылки:
→ Несколько способов привязки обработчиков событий в React:
Резюме
Итак, теперь вы можете определить значение this
, следуя этим простым правилам:
- По умолчанию
this
относится к глобальному объекту (т.е. окну в браузере). - В строгом режиме
this
не определено. - JavaScript назначит область
this
объекту, предшествующему оператору точки (.) Перед вызовом функции. - Когда мы передаем метод как ссылку на переменную, значение переменной будет обычной функцией.
- Метод bind () используется для определения области действия ключевого слова
this
.
Спасибо за внимание! Если вам понравилась эта статья, нажмите 👏 кнопку и поделитесь, чтобы помочь другим найти ее! Не стесняйтесь оставлять комментарии 💬 ниже.
Хотите оставить отзыв? Давайте подключимся в Твиттере.