我已经在使用react es6
,但在这种情况下,我不知道如何避免将其用于this
:
const that = this;
UploadApi.exec(file).then(data => {
that.setState({ loading : false});
});
答案 0 :(得分:7)
在此示例中,您已使用arrow function
,因此不需要将reference
存储在单独的变量中。您可以直接使用this
这样的关键字:
//const that = this;
UploadApi.exec(file).then(data => {
this.setState({ loading : false});
});
当您使用reference
时,将callback method
存储在所需的单独变量中:
const that = this;
UploadApi.exec(file).then(function(data){
that.setState({ loading : false});
});
但是,您可以使用.bind(this)
callback method
来避免额外变量,如下所示:
//const that = this;
UploadApi.exec(file).then(function(data){
this.setState({ loading : false});
}.bind(this));
检查此答案以获取完整的详细信息, arrow function vs function declaration
答案 1 :(得分:0)
你需要以这种方式创建你的UploadApi.exec,以便在转换后你的javascript得到相应的创建。如下所示
在您的UploadApi
exec=(file:any):Q.Promise=>{
}
然后像下面那样使用它
UploadApi.exec(file).then(data => {
this.setState({ loading : false});
});