Задать вопрос
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...

Как с этим бороться?
  • Вопрос задан
  • 182 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 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 Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽