Javascript 未定义未处理的承诺拒绝

Javascript 未定义未处理的承诺拒绝,javascript,react-native,es6-promise,Javascript,React Native,Es6 Promise,在我的React Native应用程序中,我有一个自定义登录facebook按钮: <Button onPress={() => this.handleFacebookLogin()}> <Text>Login with Face</Text> </Button> 但我得到了这个错误: 可能未处理的承诺拒绝(id:20):引用错误: 未定义SigninFaceBookLoginFirebase TypeError:\u this2.Si

在我的React Native应用程序中,我有一个自定义登录facebook按钮:

<Button onPress={() => this.handleFacebookLogin()}>
  <Text>Login with Face</Text>
</Button>
但我得到了这个错误:

可能未处理的承诺拒绝(id:20):引用错误: 未定义SigninFaceBookLoginFirebase TypeError:\u this2.SigninFaceBookLoginFirebase不是函数

TypeError:\u this2.SigninFaceBookLoginFirebase不是函数

和SigninFaceBookLoginFirebase方法:

   signInFacebookLoginInFirebase(facebookToken){
     const credential = Fb.firebase.auth.FacebookAuthProvider.credential(facebookToken);
     Fb.firebase
       .auth()
       .signInWithCredential(credential)
       .then(() => alert('Account accepted'))
       .catch((error) => alert('Account disabled'));
   }

通过不对
使用箭头符号。然后
回调到
logInWithReadPermissions
将不会成为
SigninFaceBookLoginFirebase
函数的上下文

AccessToken.getCurrentAccessToken()中使用箭头符号。然后
就可以了,现在只需更改

LoginManager.logInWithReadPermissions(['public_profile', 'email', 'user_friends']).then(
    function (result) {

然后使用注释掉的

this.signInFacebookLoginInFirebase(data.accessToken);
为了妥善处理所有潜在的拒绝,我建议

handleFacebookLogin () {
    LoginManager.logInWithReadPermissions(['public_profile', 'email', 'user_friends'])
    .then(result => {
        if (result.isCancelled) {
            console.log('Login cancelled');
        } else {
            console.log('Login success with permissions: ' + result.grantedPermissions.toString())
            return AccessToken.getCurrentAccessToken()
            .then(data => this.signInFacebookLoginInFirebase(data.accessToken));
        }
    // .catch chained from .then to handle all rejections
    }).catch(error => {
        console.log('Login fail with error: ' + error);
        alert('Error at login, no network ?');
    })
}

那么您是否有一个名为
signInFacebookLoginInFirebase
的函数?注释错误?我尝试了“this”,但没有将
函数(结果)
更改为
(结果)=>
。。。现在
这个
可能是正确的,所以你可以使用
这个。signInFacebookLoginInFirebase
-也许?不清楚你的不同代码片段是否正常,谢谢@JaromandaX,如果你发布一个答案,我会支持你的答案
this.signInFacebookLoginInFirebase(data.accessToken);
handleFacebookLogin () {
    LoginManager.logInWithReadPermissions(['public_profile', 'email', 'user_friends'])
    .then(result => {
        if (result.isCancelled) {
            console.log('Login cancelled');
        } else {
            console.log('Login success with permissions: ' + result.grantedPermissions.toString())
            return AccessToken.getCurrentAccessToken()
            .then(data => this.signInFacebookLoginInFirebase(data.accessToken));
        }
    // .catch chained from .then to handle all rejections
    }).catch(error => {
        console.log('Login fail with error: ' + error);
        alert('Error at login, no network ?');
    })
}