来自 React Native 承诺的结果
2018-10-02
72
这是我的连接方法:
export function connexionUser(email, password) {
result = firebase.auth().signInWithEmailAndPassword(email, password)
.then((res) => {
console.log("res: ", res)
return true;
})
.catch(function (error) {
return false;
});
return result;
};
这是我在 index.js 中的方法:
login = () => {
const { email, password } = this.state;
var result = connexionUser(email, password);
console.log("result");
console.log(result);
if (result == true) {
this.props.navigation.navigate('Favorites');
}
}
问题: 我想获取 index.js 中“connexionUser()”的结果,以便能够管理导航或其他内容。 但我的结果不是真也不是假:
result
A {
"a": 0,
"b": null,
"c": A {
"a": 0,
"b": qb {
"a": [Circular],
"b": [Function anonymous],
"c": false,
"f": null,
"g": [Function anonymous],
"next": null,
},
"c": A {
"a": 0,
"b": qb {
.....
.....and more
PS:我是 React Native 的初学者。
1个回答
您始终可以尝试插入
console.log
来查看结果的输出。如果您在使用 React Native 进行调试时遇到问题,
有关调试的文档
非常有用。
就目前情况而言,您的 registerUser 将返回
undefined
,因为您实际上并未返回结果。我猜想您正尝试在
then
语句中返回
result
,但
then
语句应该接收您的 firebase 函数的结果并返回这些结果。我建议你阅读一些关于
Promises
的内容,以了解它们的工作原理。你可以这样重写它:
export function registerUser(email, password) {
result = firebase.auth().createUserWithEmailAndPassword(email, password).then((res) => {
console.log("res: ", res)
return res;
})
.catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;
alert(errorMessage);
});
return result;
}
Ariel Salem
2018-10-02