gpt4 book ai didi

javascript - React native 方法未定义

转载 作者:行者123 更新时间:2023-11-29 20:48:13 25 4
gpt4 key购买 nike

我正在尝试在 AccessToken.getCurrentAccessToken() 中调用 signInWithFacebook 方法,但获取 signInWithFacebook 是未定义的。如果我在 LoginManager.logInWithReadPermissions 函数之外调用该方法,该方法就可以正常工作。我似乎无法调用 LoginManager.logInWithReadPermissions

中的任何方法

我是 React Native 的新手,请帮忙。谢谢。

const FBSDK = require('react-native-fbsdk');
const {
LoginManager,
AccessToken,
} = FBSDK;
import React from 'react';
import { Text, View, TouchableOpacity, Image } from 'react-native';

import { connect } from 'react-redux';

import { firebaseActions as auth } from "../actions";
const { signInWithFacebook } = auth;



class FacebookLogin extends React.Component {
constructor() {
super();

this.onSuccess = this.onSuccess.bind(this);
this.onError = this.onError.bind(this);
this.onSignInWithFacebook = this.onSignInWithFacebook.bind(this);
}

async onSignInWithFacebook() {

LoginManager.logInWithReadPermissions(["public_profile"]).then(
function (result) {
if (result.isCancelled) {
console.log("Login was Cancelled");
} else {

AccessToken.getCurrentAccessToken().then(
(data) => {
this.props.signInWithFacebook(data.accessToken, this.onSuccess, this.onError);
}
);
}
},
function (error) {
console.log("An error has occured" + error);
}
);

}

onSuccess({ exists, user }) {
console.log(
"Login Success"
);

}

onError(error) {
console.log(error.message);
}

render() {
return (
<View>
<TouchableOpacity
onPress={this.onSignInWithFacebook}
>
<Text>Login</Text>
</TouchableOpacity>
</View>
);
}
}

export default connect(null, { signInWithFacebook })(FacebookLogin);

最佳答案

为此只需在您的代码中添加一行:--

async onSignInWithFacebook() {
const _this = this;
LoginManager.logInWithReadPermissions(["public_profile"]).then(
function (result) {
if (result.isCancelled) {
console.log("Login was Cancelled");
} else {

AccessToken.getCurrentAccessToken().then(
(data) => {
_this.props.signInWithFacebook(data.accessToken, this.onSuccess, this.onError);
}
);
}
},
function (error) {
console.log("An error has occured" + error);
}
);

}

在您的代码 LoginManager 中发出一个事件,因此您的 this 范围已更改并且您得到了未定义的 signInWithFacebook..笔记: - 当使用 addEventListener() 附加一个函数时,this 的值被改变了...

关于javascript - React native 方法未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53375141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com