Результат обещания React Native

Вот способ подключения:

export  function connexionUser(email, password) {

    result = firebase.auth().signInWithEmailAndPassword(email, password)
        .then((res) => {
            console.info("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.info("result");
    console.info(result);
    if (result == true) {
        this.props.navigation.navigate('Favorites');
    }
}

Проблема : Я хотел бы получить результат «connexionUser ()» в моем index.js, чтобы иметь возможность управлять навигацией или чем-то еще. Но мой результат неверен или ложен:

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.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы всегда можете попробовать добавить console.info, чтобы посмотреть, каков будет результат. Если у вас возникли проблемы с отладкой с помощью React Native, документы по отладке действительно поможет.

В его нынешнем виде ваш registerUser вернет undefined, поскольку вы фактически не возвращаете результат. Я предполагаю, что вы пытаетесь вернуть result в своем операторе then, но оператор then должен получать результаты вашей функции firebase и возвращать эти результаты. Я бы порекомендовал немного почитать о Обещания, чтобы прояснить, как они работают. Один из способов переписать это:

export function registerUser(email, password) {

    result = firebase.auth().createUserWithEmailAndPassword(email, password).then((res) => {
            console.info("res: ", res)
            return res;
        })
        .catch((error) => {
            var errorCode = error.code;
            var errorMessage = error.message;
            alert(errorMessage);
        });
    return result;
}

Похоже, ваша новая цель - достичь двух вещей: 1. Вы хотите, чтобы ваш условный оператор if срабатывал. 2. Вы хотели бы передать свой объект results дочернему компоненту. Если это так, то вы всегда можете упростите условное выражение до простого: if (result), поскольку объект всегда будет истинным (medium.com/@ariel.salem1989/…). Чтобы передать результаты следующему компоненту, просто следуйте документации: reactnavigation.org/docs/en/params.html

Ariel Salem 03.10.2018 21:56

Другие вопросы по теме