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 просмотра
Решения вопроса 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 окружающего контекста.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы