Хочу уточнить у понимающих, правильно ли я понимаю прикол с
this в этом куске кода (точнее в getData):
class Movies extends React.Component {
constructor(props) {
super(props);
this.state = {
movies: []
};
//this.processRequest = this.processRequest.bind(this);
}
componentDidMount() {
this.getData();
}
getData = () => {
let _this = this
fetch('https://reactnative.dev/movies.json')
.then(
response => {
if (response.status !== 200) {
console.log('Looks like there was a problem. Status Code: ' + response.status);
return;
}
response.json().then(
data => {
_this.setState({movies: data.movies})
}
);
}
)
.catch(function(err) {
console.log('Fetch Error :-S', err);
});
}
renderData = () => {
let data = "Loading..."
if(this.state.movies.length === 0) {
return data;
}
return this.state.movies.map(data => (
<li key={data.id}>{data.title}</li>
));
}
render() {
var moviesStyle = {
fontFamily: "sans-serif",
fontWeight: "bold",
fontSize: 12,
padding: 10,
margin: 0
};
return (
<div>
<h2>Movies:</h2>
<ul>
{this.renderData()}
</ul>
</div>
);
}
}
Как я понимаю:
getData = () => {
let _this = this
означает, что _this в этом месте привязан не к блоку getData, а к родительскому классу Movies? И, соотв., задание переменных из json относится именно к переменным, заданным в конструкторе класса Movies. А если бы функция getData задавалась бы так:
getData() {
...
}
то this относилось бы к содержимому getData() а не класса Movies?
И закомментированная строка удаленной ныне функции
this.processRequest = this.processRequest.bind(this) по сути также биндит "корневой this" к "this внутри функции processRequest для тех же целей - область видимости переменных?
PS: Я с php прямолинейного свалился в этот "кошмар", пытаюсь осознать основные "приколы" JS...