未调用React.js函数

时间:2018-08-30 09:10:51

标签: reactjs

我正在我的React项目上实现Facebook SDK,但是,我是React的新手,我仍然不了解某些概念。当用户单击按钮时,我正在呼叫handleFBLogin。然后,此函数调用checkLoginState继续执行我的代码的逻辑。我已经使用以下方法在构造函数中绑定了checkLoginState

this.CheckLoginState = this.checkLoginState.bind(this);

我在handleFBLogin上调用了此函数,但似乎未调用checkLoginState。我可以在控制台上看到yes

handleFBLogin() {
    console.log("yes")
    this.checkLoginState;
}

这是checkLoginState函数:

checkLoginState(){
    console.log("checloginstate")
    window.FB.getLoginStatus(function(response) {
      console.log(response);
      this.statusChangeCallback(response);
    }.bind(this));

}

为什么不叫它?

3 个答案:

答案 0 :(得分:3)

您可能会像在onClick={this.yourMethod}这样的事件中考虑不使用括号就调用函数。之所以有效,是因为react将在内部对其进行处理。

但是从一个方法调用另一个函数时,您需要使用括号来调用该函数:

this.checkLoginState()

但是等等!如果尚未绑定this,则this在这里将是未定义的。因此,将其绑定到您的构造函数中:

this.handleFBLogin = this.handleFBLogin.bind(this)

或者,您可以使用公共类方法:

handleFBLogin = () => {
  this.checkLoginState()

答案 1 :(得分:0)

我认为这是类型错误。您忘记添加“()”来调用函数了。

handleFBLogin() {
    console.log("yes")
    this.checkLoginState();
}

答案 2 :(得分:0)

handleFBLogin()内尝试() => this.checkLoginState();。您需要括号才能调用该方法。