您好我的印象是,如果您使用箭头功能,这是指封闭范围,如以下链接所述
https://www.sitepoint.com/bind-javascripts-this-keyword-react/:
- ES2015 Arrows
醇>ES2015规范引入了箭头函数语法 写函数表达式。和普通人一样 函数表达式,它们也可以具有隐式返回和大多数 重要的是,他们总是使用封闭的价值 范围。
在下面的示例中,this
未引用封闭范围而是引用全局范围。
addMeasurement(username,jsonObject){
...
return fetch(measurementURL,
{
method: 'PATCH',
body: jsonStringify
}).then( (res) => {
// this below refers to the global context.
//Instead of the current instance and hence is undefined
this.addMeasurementToAudit(username,jsonObject)
res.json()
});
}
没有箭头并明确地绑定它,按预期工作:
addMeasurement(username,jsonObject){
...
return fetch(measurementURL,
{
method: 'PATCH',
body: jsonStringify
}).then( function success(res) {
//this refers to the enclosing instance and works as expected
this.addMeasurementToAudit(username,jsonObject)
res.json()
}.bind(this));
},