无法引用内部回调中的反应组件

时间:2017-07-12 20:51:59

标签: reactjs

在我的反应组件中,我试图在邮件请求完成后调用函数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);
      });
  }

1 个答案:

答案 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);
});

}