我正在我的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));
}
为什么不叫它?
答案 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();
。您需要括号才能调用该方法。