在我的反应组件中,我试图在邮件请求完成后调用函数emptyCart
。但是,当我从回调内部调用the emptyCart
时(在代码中称为SECOND CALL),我收到错误:TypeError: Cannot read property 'emptyCart' of undefined
。但是,当我从函数的开头调用emptyCart
时,它会按预期工作。旁注,我没有在代码中同时调用emptyCart
。为什么我不能在回调中使用this
引用我的组件?
checkout = (order) => {
this.emptyCart(); //FIRST CALL
axios({
method: 'post',
url: '/api',
data: {
order:order,
},
})
.then(function(response) {
this.emptyCart(); //SECOND CALL
console.log(response);
})
.catch(function (error) {
console.log(error);
});
}
答案 0 :(得分:3)
this
指的是回调函数。一个简单的解决方法是用箭头函数替换。
checkout = (order) => {
this.emptyCart(); //FIRST CALL
axios({
method: 'post',
url: '/api',
data: {
order:order,
},
})
.then((response) => {
this.emptyCart(); //SECOND CALL
console.log(response);
})
.catch(error) => {
console.log(error);
});
}