开发者问题收集

来自 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