Задать вопрос
nuclear_kote
@nuclear_kote

Почему теряется this?

export default class App extends React.Component {
        onRegionChange(region) {
		this.setState({region: region});
	}
        render() {
		return (
			<View >
				<MapView region={this.state.region} onRegionChange={this.onRegionChange} />
			</View>
		);
	}
}


Почему то this в onRegionChange не относится к классу App (undefined is not a function (evaluating 'this.setState...

Как с этим бороться?
  • Вопрос задан
  • 183 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • ProductStar
    Разработка на React
    6 недель
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Решения вопроса 4
@davidnum95
Нужно биндить контекст.
constructor(props, context) {
    super(props, context);
    this.onRegionChange = this.onRegionChange .bind(this);
  }
Ответ написан
devellopah
@devellopah
.setState() является методом объекта<App /> , а не глобального объекта window.
Соответсвенно, если упоминаешь this в теле функции, то метод нужно завязывать на контексте.
Ответ написан
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
С версии 0.14 при записи extends ... Component реакт больше не "автобиндит" this.
Если использовать React.createClass - будет. Но лучше просто bind'ить необходимое в constructor'e
Ответ написан
Комментировать
@undefined_title
Используй стрелочные функции, их главная особенность то что в таких моментах this не теряется, они захватывают значение this окружающего контекста.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽
от 250 000 до 300 000 ₽