我正在使用以下提取API来获取API结果。我需要在状态中设置结果数据,但回调函数中的“this”对象不可用。如何通过访问this
关键字来更新代码以设置状态值?
fetch(config.apiUrl + '/api/user', {
headers: authHeader(),
method: 'GET',
})
.then(function(res) {
return res.json();
})
.then(function(data) {
this.setState({ id: data.id });
});
答案 0 :(得分:2)
您可以使用箭头功能
fetch(config.apiUrl + '/api/user', {
headers: authHeader(),
method: 'GET',
})
.then(res => {
return res.json();
})
.then(data => {
this.setState({ id: data.id });
});
或者您可以将this
关键字分配给变量并使用它
var that = this;
fetch(config.apiUrl + '/api/user', {
headers: authHeader(),
method: 'GET',
})
.then(function(res) {
return res.json();
})
.then(function(data) {
that.setState({ id: data.id });
});
答案 1 :(得分:0)
this
关键字分配给回调之外的变量,该变量仍然可用。通常使用var self = this;
。