Я не уверен, почему я не могу вызвать метод своего класса в цикле forEach
. Есть ли способ исправить это?
Это работает:
this.displayMaps()
Но это не работает:
this.state.floors.forEach(function(floor) {
this.displayMaps(floor)
})
Вероятно, есть - если вы предоставите нам какой-нибудь код!
Разместите свой код. Пожалуйста.
forEach(function(floor) {
функция обратного вызова имеет свой контекст (this
). Вы можете использовать функцию стрелки или использовать другие приемы привязки контекста.
ваш this
может быть испорчен, потому что вы находитесь внутри forEach. Как объявляется ваш displayMaps
?
forEach
ничего не возвращает. Используйте функцию стрелки и map
.
Возможный дубликат Как получить доступ к правильному `this` внутри обратного вызова?
Кроме того, "это не работает" не является достаточно четким описанием, чтобы получить помощь в большинстве случаев. Опишите точную проблему, с которой вы столкнулись, и ожидаемое поведение, которого вы хотели бы добиться.
Область действия this
изменяется внутри функции forEach
callback
. Вместо этого используйте стрелочная функция
{
this.state.floors.forEach((floor) => {
this.displayMaps()
})
}
вам может не понадобиться это утверждение: this.displayMaps = this.displayMaps.bind(this);
Может быть. Но очень трудно сказать, не глядя на реальный код.