Вот быстрый и грязный совет для React :)
Если вы делаете вызов AJAX из компонента React и хотите обновить его состояние из функции успеха, вы можете сделать это:
componentDidMount: function() {
var that = this;
$.ajax({
type: GET,
url: http://localhost:3000/,
success: function(data) {
that.setState({
sampleState: data.sampleState
});
}
});
}
По сути, здесь происходит следующее: вы привязываете переменную that к контексту, из которого вы сделали вызов AJAX. То есть контекст верхнего уровня компонента.
Это полезно, потому что, когда вы вызываете this.setState непосредственно из функции успеха, «это» относится к контексту выполнения самой функции успеха, а не к компоненту, что означает, что при попытке вызвать setState вы получите ошибку, потому что функция успеха не имеет свойства setState.
Создание переменной that и привязка ее к this фактически создает замыкание, которое можно использовать для обновления состояния компонента, даже если вы находитесь в другом контексте.
Не супер сложно, но я сталкивался с этим несколько раз, так что, надеюсь, это убережет вас от повторения той же ошибки.
Ваше здоровье,
-R