从javascript es6中的函数调用函数

时间:2016-10-09 06:06:04

标签: javascript reactjs es6-class

我正在使用带有babel的es6 javascript,并尝试使用xhr使用两个函数进行ajax调用,但收到错误'h5_fn'

从es6 javascript中同一个类中定义的另一个函数调用函数的正确语法是什么?

感谢您的回答,这是我的代码

h5_fn

Edit1:这就是我如何调用登录功能/也将数据传递给上面的xhr请求

Uncaught TypeError: this.post is not a function

2 个答案:

答案 0 :(得分:1)

您的方法login()post()是实例方法,而不是静态方法。因此,您必须使用LoginActions创建new对象的实例,以便在该对象上正确调用这些方法。

或者,如果您实际上不需要包含实例数据的实例,那么请将所有方法设为静态,并将其称为LoginActions.post()LoginActions.login(),而不是this

相反,你正试图混合搭配。您正在调用LoginActions.login()这是一个静态类型调用,然后在login()内部,您尝试引用假设某个实例的this

答案 1 :(得分:0)

试试这些事情:

  1. 正如@jfriend00建议的那样,创建一个LoginAction类的实例并在其上调用login方法:
      

    var loginAction = new LoginActions();
      loginAction.login(name, password, remember);

  2. 在LoginActions类中定义generateActions方法。
  3.   

    this.post('api/login', data, function(err, data) { if (!err) { this.actions.loginSuccess(data.message); } else { this.actions.loginFail(JSON.parse(data.message)); } }).bind(this);
      在这里,您似乎试图将this绑定到回调。但实际上你将this绑定到post方法的返回值。要将this绑定到回调,   this.post('api/login', data, function(err, data) { if (!err) { this.actions.loginSuccess(data.message); } else { this.actions.loginFail(JSON.parse(data.message)); } }.bind(this));
      注意函数(){}。bind而不是post(function(){})。bind