После аутентификации с firebase я хочу сохранить имя, адрес электронной почты в состоянии - PullRequest
0 голосов
/ 02 апреля 2019

Я занимаюсь разработкой полного стека приложений IN Reactjs и Firebase. Я успешно прошел аутентификацию с использованием метода signInWithPopup, после чего хочу сохранить учетные данные в локальном состоянии.

Я использовал this.setState в ComponentDidMount, но получил ошибку. Я даже использовал axios, но потерпел неудачу.


state = {

    } 

componentWillMount() {
       auth.onAuthStateChanged(function (user) {
            if (user) {
                // User is signed in.
                var displayName = user.displayName;
                console.log(displayName);
                var email = user.email;
                console.log(email);
                var emailVerified = user.emailVerified;
                console.log(emailVerified);
                var photoURL = user.photoURL;
                var isAnonymous = user.isAnonymous;
                var uid = user.uid;
                var providerData = user.providerData;

                this.setState({
                    displayName:this.displayName
                })
               } else {
                window.location = "/signin";
            }
        })
    }

TypeError: this.setState не является функцией

1 Ответ

1 голос
/ 02 апреля 2019

Используйте auth.onAuthStateChanged((user) => { (функции стрелок).this, используемые внутри функций стрелок и обычных функций, отличаются.

Также не используйте componentWillMount, вместо этого используйте componentDidMount для аутентификации с помощью firebase.Прочитайте этот ТАК ответ.

...