Неопределенное значение из импортированной функции - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь получить значение TRUE / FALSE из другого вспомогательного файла JS, где у меня есть некоторые функции, однако, когда я пытаюсь получить возвращаемое значение из этой функции, все, что я получаю, это "undefined"

//firebaseHelper.js
//js file where I have the function that I want to use in my main LoginView.jsx" file

export function isUserLogged(){
    firebase.auth().onAuthStateChanged(user =>{
        if(user){
            return true;
        }else{
            return false;
        }
    })    
}


//LoginView.jsx

import {isUserLogged, signOut} from "../../helpers/firebaseHelper";

class Login extends React.Component {
  state = {
    toDashboard: false,
  }

  componentDidMount(){
    console.log(isUserLogged());
  }

console.log возвращает неопределенное значение, однако, когда я вызываю, например, signOut или isUserLogged и вместо возврата я добавляю console.log в эти функции, я вижу ответ в консоли.

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Проблема в том, что firebase.auth().onAuthStateChanged является асинхронным.

Вы можете сделать следующее:

//LoginView.jsx

class Login extends React.Component {
  state = {
    toDashboard: false,
  }


componentDidMount = async () => {
        await firebase.auth().onAuthStateChanged(user => {
            if (user) {
                ...logged-in
            } else {
                ...logged-out
            }
        })
    }
0 голосов
/ 25 мая 2019

Попробуйте: замените функцию isUserLogged на:

export function isUserLogged(){
    return firebase.auth().onAuthStateChanged(user => !!user);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...